|
Foundation 1.1.2 | |||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
java.lang.Object java.util.Random java.security.SecureRandom
public class SecureRandom
このクラスは暗号用に強化された擬似乱数ジェネレータ (PRNG) を提供します。強力な暗号化による擬似乱数は、「FIPS 140-2, Security Requirements for Cryptographic Modules」のセクション 4.9.1 に指定されている統計的乱数生成テストに最低限適合しています。また、SecureRandom は決定性ではない出力を行う必要があるため、シード素材が予測不可能であり、SecureRandom の出力が「RFC 1750: Randomness Recommendations for Security」に記述されているとおり、強力に暗号化されたシーケンスである必要があります。
Java Security に含まれるほかのアルゴリズムベースのクラスと同様に、SecureRandom も実装に依存しないアルゴリズムを提供します。それにより、呼び出し側 (アプリケーションコード) は特定の PRNG アルゴリズムを要求し、そのアルゴリズムに対する SecureRandom オブジェクトが返されます。また、必要に応じて、特定のプロバイダから特定のアルゴリズムを要求することもできます。getInstance
メソッドを参照してください。
したがって、SecureRandom オブジェクトを要求するには、2 つの方法があります。1 つはアルゴリズム名のみを指定する方法で、もう 1 つはアルゴリズム名とパッケージプロバイダの両方を指定する方法です。
SecureRandom random = SecureRandom.getInstance("SHA1PRNG");システムは、要求されたアルゴリズムの実装がその環境で提供されているかどうか、また複数の実装がある場合は、優先順位の高い実装があるかどうかを調べます。
SecureRandom random = SecureRandom.getInstance("SHA1PRNG", "SUN");システムは、要求されたパッケージ内にアルゴリズムの実装があるかどうかを調べ、ない場合には例外をスローします。
SecureRandom の実装では、呼び出し側が getInstance
メソッドを呼び出したあとで setSeed
メソッドを呼び出さないかぎり、ジェネレータ自身の内部状態を完全にランダム化しようとします。
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,
Provider provider)
指定されたプロバイダから指定された PRNG の実装を取得できる場合に、そのプロバイダが提供する PRNG アルゴリズムに対する SecureRandom オブジェクトを生成します。 |
static SecureRandom |
getInstance(String algorithm,
String provider)
指定されたプロバイダから指定された PRNG の実装を取得できる場合に、そのプロバイダが提供する 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 を参照
NoSuchAlgorithmException
- PRNG アルゴリズムが呼び出し側の環境で使用できない場合public static SecureRandom getInstance(String algorithm, String provider) throws NoSuchAlgorithmException, NoSuchProviderException
返された SecureRandom インスタンスはシードされていません。SecureRandom オブジェクトをシードするには、setSeed
メソッドを呼び出します。setSeed
の呼び出しが行われなかった場合は、最初に nextBytes
メソッドを呼び出したときに、SecureRandom オブジェクトが自身のシードを行うように強制されます。
algorithm
- PRNG アルゴリズムの名前。
PRNG アルゴリズムの標準的な名前については、「Java 暗号化アーキテクチャー API の仕様およびリファレンス」の付録 A を参照provider
- プロバイダ名
NoSuchAlgorithmException
- 要求された PRNG の実装をそのプロバイダから取得できない場合
NoSuchProviderException
- プロバイダが設定されていない場合
IllegalArgumentException
- プロバイダ名が null または空の場合Provider
public static SecureRandom getInstance(String algorithm, Provider provider) throws NoSuchAlgorithmException
provider
を登録する必要はありません。
返された SecureRandom インスタンスはシードされていません。SecureRandom オブジェクトをシードするには、setSeed
メソッドを呼び出します。setSeed
の呼び出しが行われなかった場合は、最初に nextBytes
メソッドを呼び出したときに、SecureRandom オブジェクトが自身のシードを行うように強制されます。
algorithm
- PRNG アルゴリズムの名前。
PRNG アルゴリズムの標準的な名前については、「Java 暗号化アーキテクチャー API の仕様およびリファレンス」の付録 A を参照provider
- プロバイダ
NoSuchAlgorithmException
- 要求された PRNG の実装をそのプロバイダから取得できない場合
IllegalArgumentException
- provider
が null の場合Provider
public final Provider getProvider()
public void setSeed(byte[] seed)
seed
- シードgetSeed(int)
public void setSeed(long seed)
long seed
に含まれている 8 バイトを使用して、この乱数オブジェクトを再シードします。与えられたシードは、既存のシードと置き換わるのではなく、既存のシードに追加されます。これにより、呼び出しを繰り返しても、ランダム性が減少しないことが保証されます。
このメソッドは、java.util.Random
との互換性のために定義されています。
Random
内の setSeed
seed
- シードgetSeed(int)
public void nextBytes(byte[] bytes)
Random
内の nextBytes
bytes
- 乱数バイトを充填する配列protected final int next(int numBits)
java.util.Random
メソッドをオーバーライドし、そのクラス (たとえば、nextInt
、nextLong
、および nextFloat
) から継承するメソッドのすべてに乱数ビットの発生源を提供するのに役立ちます。
Random
内の next
numBits
- 0 <= numBits
<= 32 の場合、生成する擬似乱数ビットの数
int
public static byte[] getSeed(int numBytes)
このメソッドは、下位互換のためだけに提供されています。呼び出し側からは、代替の getInstance
メソッドのうちの 1 つを使用して SecureRandom オブジェクトを取得したすぐあとに、setSeed
メソッドを呼び出してそのオブジェクトからシードバイトを取得することをお勧めします。
numBytes
- 生成するシードバイト数
setSeed(byte[])
public byte[] generateSeed(int numBytes)
numBytes
- 生成するシードバイト数
|
Foundation 1.1.2 | |||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。