|
Java プラットフォーム 1.2 |
|||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 内部クラス | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
java.lang.Object | +--java.util.Random | +--java.security.SecureRandom
このクラスは、暗号用に強化した擬似乱数ジェネレータ (PRNG) を提供します。
Java Security API のアルゴリズムベースのほかのクラスと同様、SecureRandom クラスは実装に依存しないアルゴリズムを提供します。つまり、呼び出し側 (アプリケーションのコード) は、特定の PRNG アルゴリズムを要求すれば、そのアルゴリズムに対応する SecureRandom オブジェクトを受け取ることができます。必要であれば、特定のプロバイダからの特定のアルゴリズムを要求することも可能です。詳細は、getInstance
メソッドを参照してください。
SecureRandom オブジェクトを要求するには 2 つの方法があります。1 つはアルゴリズムの名前だけを指定する方法、もう 1 つはアルゴリズムの名前とパッケージプロバイダを指定する方法です。
SecureRandom random = SecureRandom.getInstance("SHA1PRNG");システムは、環境で利用できる要求されたアルゴリズムの実装があるかどうかを判断します。また、利用できる実装が複数ある場合は、優先順位の高い実装があるかどうかも判断します。
SecureRandom random = SecureRandom.getInstance("SHA1PRNG", "SUN");システムは、要求されたパッケージにアルゴリズムの実装があるかどうかを判断して、実装がない場合は例外をスローします。
getInstance
メソッドの呼び出しのすぐあとに setSeed
メソッドを呼び出す場合を除いて、SecureRandom の実装は、ジェネレータの内部状態を完全にランダムにしようと試みます。
SecureRandom random = SecureRandom.getInstance("SHA1PRNG"); random.setSeed(seed);
呼び出し側は、getInstance
の呼び出しによって SecureRandom を取得したあと、nextBytes
を呼び出して乱数バイトを生成できます。
byte bytes[] = new byte[20]; random.nextBytes(bytes);
呼び出し側は、次の例のように generateSeed
メソッドを呼び出して、指定の数のシードバイトを生成することもできます。生成したシードバイトは、別の乱数ジェネレータをシードするなどのために使います。
byte seed[] = random.generateSeed(20);
SecureRandomSpi
,
Random
, 直列化された形式コンストラクタの概要 | |
|
SecureRandom()
このコンストラクタを使うと、呼び出し側は、実装された SecureRandom を持っているインストール済みの中でも、もっとも優先度の高いプロバイダから、SecureRandom オブジェクトとその実装コードを取得することができます。 |
|
SecureRandom(byte[] seed)
このコンストラクタを使うと、呼び出し側は、実装された SecureRandom を持っている、インストール済みの中でもっとも優先度の高いプロバイダから、SecureRandom オブジェクトとその実装コードを取得することができます。 |
protected |
SecureRandom(SecureRandomSpi secureRandomSpi,
Provider provider)
SecureRandom オブジェクトを作成します。 |
メソッドの概要 | |
byte[] |
generateSeed(int numBytes)
指定されたバイト数のシードバイトを返します。 |
static SecureRandom |
getInstance(String algorithm)
指定された擬似乱数ジェネレータ (PRNG) アルゴリズムを実装する SecureRandom オブジェクトを作成します。 |
static SecureRandom |
getInstance(String algorithm,
String provider)
指定された PRNG アルゴリズムに対する SecureRandom オブジェクトを作成します。 |
Provider |
getProvider()
この SecureRandom オブジェクトのプロバイダを返します。 |
static byte[] |
getSeed(int numBytes)
指定されたバイト数のシードバイトを返します。 |
protected int |
next(int numBits)
ユーザが指定した数の擬似乱数ビット (右詰、ゼロ埋め込み) を含む整数を生成します。 |
void |
nextBytes(byte[] bytes)
ユーザが指定したバイト数の乱数バイトを生成します。 |
void |
setSeed(byte[] seed)
この乱数オブジェクトを再シードします。 |
void |
setSeed(long seed)
指定された long seed に含まれている 8 バイトを使用して、この乱数オブジェクトを再シードします。 |
クラス java.util.Random から継承したメソッド |
nextBoolean,
nextDouble,
nextFloat,
nextGaussian,
nextInt,
nextInt,
nextLong |
クラス java.lang.Object から継承したメソッド |
clone,
equals,
finalize,
getClass,
hashCode,
notify,
notifyAll,
toString,
wait,
wait,
wait |
コンストラクタの詳細 |
public SecureRandom()
このコンストラクタを使うと、呼び出し側は、実装された SecureRandom を持っているインストール済みの中でも、もっとも優先度の高いプロバイダから、SecureRandom オブジェクトとその実装コードを取得することができます。
この SecureRandom のインスタンスはシード付けされていません。SecureRandom オブジェクトをシード付けするには、setSeed
メソッドを呼び出します。setSeed
が呼び出されなかった場合は、最初に nextBytes
メソッドを呼び出したときに、SecureRandom オブジェクト自身によりシード付けが強制的に実行されます。
このコンストラクタは、下位互換のために提供されています。呼び出し側からは、代替の getInstance
メソッドのうちの 1 つを使用してSecureRandom オブジェクトを取得することをお勧めします。
public SecureRandom(byte[] seed)
このコンストラクタを使うと、呼び出し側は、実装された SecureRandom を持っている、インストール済みの中でもっとも優先度の高いプロバイダから、SecureRandom オブジェクトとその実装コードを取得することができます。このコンストラクタは、引数なしのコンストラクタの記述によって参照されるアルゴリズムの自己シードより、ユーザに提供されたシードを優先して使用します。呼び出し側がなんらかの物理デバイスからの高品質な乱数バイトにアクセスできる場合は、引数なしのコンストラクタよりこのコンストラクタを使用することをお勧めします。
このコンストラクタは、下位互換のために提供されています。呼び出し側からは、代替の getInstance
メソッドのうちの 1 つを使用して SecureRandom オブジェクトを取得したすぐあとに、setSeed
メソッドを呼び出してシードすることをお勧めします。
seed
- シードprotected SecureRandom(SecureRandomSpi secureRandomSpi, Provider provider)
secureRandomSpi
- SecureRandom の実装provider
- プロバイダメソッドの詳細 |
public static SecureRandom getInstance(String algorithm) throws NoSuchAlgorithmException
返される SecureRandom のインスタンスはシード付けされていません。SecureRandom オブジェクトをシード付けするには、setSeed
メソッドを呼び出します。setSeed
が呼び出されなかった場合は、最初に nextBytes
メソッドを呼び出したときに、SecureRandom オブジェクト自身によりシード付けが強制的に実行されます。
algorithm
- PRNG アルゴリズムの名前。PRNG アルゴリズムの標準的な名前については、「Java 暗号化アーキテクチャ API 仕様 & リファレンス」の付録 A を参照public static SecureRandom getInstance(String algorithm, String provider) throws NoSuchAlgorithmException, NoSuchProviderException
この SecureRandom のインスタンスはシード付けされていません。SecureRandom オブジェクトをシード付けするには、setSeed
メソッドを呼び出します。setSeed
が呼び出されなかった場合は、最初に nextBytes
メソッドを呼び出したときに、SecureRandom オブジェクト自身によりシード付けが強制的に実行されます。
algorithm
- PRNG アルゴリズムの名前。PRNG アルゴリズムの標準的な名前については、「Java 暗号化アーキテクチャ API 仕様 & リファレンス」の付録 A を参照provider
- プロバイダの名前Provider
public final Provider getProvider()
public void setSeed(byte[] seed)
seed
- シードpublic void setSeed(long seed)
long seed
に含まれている 8 バイトを使用して、この乱数オブジェクトを再シードします。指定されたシードは、既存のシードを置き換えるものではなく補足するものです。したがって、呼び出しを繰り返しても、無作為性が減少しないことが保証されています。
このメソッドは、java.util.Random
との互換性のための定義されているものです。
seed
- シードpublic void nextBytes(byte[] bytes)
bytes
- 乱数バイトを充填する配列protected final int next(int numBits)
java.util.Random
メソッドをオーバーライドし、そのクラス (たとえば、nextInt
、nextLong
、および nextFloat
) から継承するメソッドのすべてに乱数ビット発生の元を提供することに対応します。numBits
- 生成する擬似乱数ビットの数。ここで、0 <= numBits
<= 32 であるpublic static byte[] getSeed(int numBytes)
このメソッドは、下位互換のためにだけ提供されています。呼び出し側からは、代替の getInstance
メソッドのうちの 1 つを使用して SecureRandom オブジェクトを取得したすぐあとに、setSeed
メソッドを呼び出してそのオブジェクトからシードバイトを取得することをお勧めします。
numBytes
- 生成するシードバイト数public byte[] generateSeed(int numBytes)
numBytes
- 生成するシードバイト数
|
Java プラットフォーム 1.2 |
|||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 内部クラス | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |