全パッケージ  クラス階層  このパッケージ  前項目  次項目  インデックス

クラス java.security.SecureRandom

java.lang.Object
   |
   +----java.util.Random
           |
           +----java.security.SecureRandom

public class SecureRandom
extends Random

このクラスは、 SHA-1 ハッシュ アルゴリズムに基づく頑丈な暗号擬似乱数ジェネレータを提供します。

Random から継承される呼び出しは、 機能強化のために実装します。

参照:
Random

Constructor Index

 o SecureRandom()
この空の構築子は自動的にジェネレータをシードする。
 o SecureRandom(byte[])
この構築子は、空の構築子記述で参照されている自動シードアルゴリズムに先立ってユーザ供給のシードを使用する。

Method Index

 o getSeed(int)
指定バイト数のシードバイトを返す。このクラスが自身をシードするのに使用するシード生成アルゴリズムを使用して算出したものである。
 o next(int)
ユーザ指定数の擬似乱数ビット (右詰、ゼロ埋め込み) を含む整数を生成する。
 o nextBytes(byte[])
ユーザ指定数の乱数バイトを生成する。
 o setSeed(byte[])
この乱数オブジェクトを再シードする。
 o setSeed(long)
指定の long seed に含まれている 8 バイトを使用してこの乱数オブジェクトを再シードする。

Constructors

 o SecureRandom
  public SecureRandom()
この空の構築子は自動的にジェネレータをシードします。ジェネレータの内部状態を完全に乱数化するのに十分なシードバイト (20 バイト) を提供しようとしています。しかし、そのシード生成アルゴリズムは研究の余地があり、広く普及している訳でもありません。そのアルゴリズムは呼び出し側のスレッドが、ほかのスレッドが指定の間隔の間スリープするのを待機する最中に経過する時間をカウントすることに基づいています。

この構築子が、所定の Virtual Machine で最初に呼ばれる場合には、そのベースとなるハードウェアによっては、ジェネレータをシードするのに数秒の CPU 時間を必要とすることもあります。その後に続く呼び出しは高速に実行されます。そのシードビットに対して、同じ (内部) 擬似乱数ジェネレータを使用するからです。

この構築子が実装するシード手続きは、各 SecureRandom インスタンスが生成する擬似乱数バイトのシーケンスが、ほかのどんなインスタンスでもそれが生成するバイト シーケンスを推定させるような情報を作り出さないことを保証しています。ただし、ユーザが本当に無関係なシードをもつ複数のインスタンスを生成したい場合には、以下のコードがその要求する結果を作り出してくれます (インスタンスあたり相当な CPU 時間を要しますが)

 SecureRandom rnd = new SecureRandom(SecureRandom.getSeed(20));
 

 o SecureRandom
  public SecureRandom(byte seed[])
この構築子は、空の構築子記述で参照されている自動シードアルゴリズムに優先するユーザ供給のシードを使用します。この方が空の構築子よりも望ましいのは、呼び出し側がある物理デバイス (たとえば、放射線検出器または雑音の発生するダイオードなど) からの高品質の乱数バイトにアクセスできる場合があるからです。

パラメータ:
seed - シード

Methods

 o setSeed
  public synchronized void setSeed(byte seed[])
この乱数オブジェクトを再シードします。指定のシードは、既存のシードを置き換えるのではなく補足するものです。したがって、呼び出しを反復しても、乱数性が減少しないように保証されています。

パラメータ:
seed - シード.
 o setSeed
  public void setSeed(long seed)
指定の long seed に含まれている 8 バイトを使用してこの乱数オブジェクトを再シードします。指定のシードは、既存のシードを置き換えるのではなく補足するものです。したがって、呼び出しを反復しても、乱数性が減少しないように保証されています。

このメソッドは、 java.util.Random との互換性のための定義されているものです。

パラメータ:
seed - シード
オーバーライド:
クラスRandomsetSeed
 o nextBytes
  public synchronized void nextBytes(byte bytes[])
ユーザ指定数の乱数バイトを生成します。このメソッドは、このクラスが返す (シードバイトを除く) 乱数エンティティのすべてのベースとして使用されます。 したがって、このクラスの動作を変更するためにオーバーライドされる場合があります。

パラメータ:
bytes - 乱数バイトを充填する配列
オーバーライド:
クラス RandomnextBytes
 o next
  protected final int next(int numBits)
ユーザ指定数の擬似乱数ビット (右詰、ゼロ埋め込み) を含む整数を生成します。このメソッドは、java.util.Random メソッドをオーバーライドし、そのクラス (たとえば、 nextIntnextLong、および nextFloat) から継承するメソッドのすべてに乱数ビットのソースを提供することに対応します。

パラメータ:
numBits - 生成する擬似乱数ビットの数。ここで、 0 <= numBits <= 32 である。
オーバーライド:
クラス Randomnext
 o getSeed
  public static byte[] getSeed(int numBytes)
指定バイト数のシードバイトを返します。このクラスが自身をシードするのに使用するシード生成アルゴリズムを使用して算出したものです。 この呼び出しは、ほかの乱数ジェネレータをシードするのに使用できます。現在、「真に乱数」であるバイトのシーケンスを返すように努力している最中ですが、この呼び出しによって返されるバイトがどの程度の乱数になっているかを正確には把握していないのが現状です (ベースになっているアルゴリズムの簡単な説明については、空の構築子 SecureRandom を参照してください) 。 慎重なユーザは、慎重のあまりに誤って余分なシードバイトを取得しますが、シード生成はコストのかかる過程であることに注意する必要があります。

パラメータ:
numBytes - 生成するシードバイト数
返り値:
シードバイト

全パッケージ  クラス階層  このパッケージ  前項目  次項目  インデックス