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