Java プラットフォーム 1.2

java.security
クラス SecureRandom

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

public class SecureRandom
extends Random

このクラスは、暗号用に強化した擬似乱数ジェネレータ (PRNG) を提供します。

Java Security API のアルゴリズムベースのほかのクラスと同様、SecureRandom クラスは実装に依存しないアルゴリズムを提供します。つまり、呼び出し側 (アプリケーションのコード) は、特定の PRNG アルゴリズムを要求すれば、そのアルゴリズムに対応する SecureRandom オブジェクトを受け取ることができます。必要であれば、特定のプロバイダからの特定のアルゴリズムを要求することも可能です。詳細は、getInstance メソッドを参照してください。

SecureRandom オブジェクトを要求するには 2 つの方法があります。1 つはアルゴリズムの名前だけを指定する方法、もう 1 つはアルゴリズムの名前とパッケージプロバイダを指定する方法です。

呼び出し側が、次に示すように 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
 

コンストラクタの詳細

SecureRandom

public SecureRandom()

このコンストラクタを使うと、呼び出し側は、実装された SecureRandom を持っているインストール済みの中でも、もっとも優先度の高いプロバイダから、SecureRandom オブジェクトとその実装コードを取得することができます。

この SecureRandom のインスタンスはシード付けされていません。SecureRandom オブジェクトをシード付けするには、setSeed メソッドを呼び出します。setSeed が呼び出されなかった場合は、最初に nextBytes メソッドを呼び出したときに、SecureRandom オブジェクト自身によりシード付けが強制的に実行されます。

このコンストラクタは、下位互換のために提供されています。呼び出し側からは、代替の getInstance メソッドのうちの 1 つを使用してSecureRandom オブジェクトを取得することをお勧めします。


SecureRandom

public SecureRandom(byte[] seed)

このコンストラクタを使うと、呼び出し側は、実装された SecureRandom を持っている、インストール済みの中でもっとも優先度の高いプロバイダから、SecureRandom オブジェクトとその実装コードを取得することができます。このコンストラクタは、引数なしのコンストラクタの記述によって参照されるアルゴリズムの自己シードより、ユーザに提供されたシードを優先して使用します。呼び出し側がなんらかの物理デバイスからの高品質な乱数バイトにアクセスできる場合は、引数なしのコンストラクタよりこのコンストラクタを使用することをお勧めします。

このコンストラクタは、下位互換のために提供されています。呼び出し側からは、代替の getInstance メソッドのうちの 1 つを使用して SecureRandom オブジェクトを取得したすぐあとに、setSeed メソッドを呼び出してシードすることをお勧めします。

パラメータ:
seed - シード

SecureRandom

protected SecureRandom(SecureRandomSpi secureRandomSpi,
                       Provider provider)
SecureRandom オブジェクトを作成します。
パラメータ:
secureRandomSpi - SecureRandom の実装
provider - プロバイダ
メソッドの詳細

getInstance

public static SecureRandom getInstance(String algorithm)
                                throws NoSuchAlgorithmException
指定された擬似乱数ジェネレータ (PRNG) アルゴリズムを実装する SecureRandom オブジェクトを作成します。要求された PRNG の実装をデフォルトのプロバイダパッケージが提供している場合は、その実装を含む SecureRandom のインスタンスを返します。デフォルトのパッケージで PRNG が利用できない場合は、ほかのパッケージを検索します。

返される SecureRandom のインスタンスはシード付けされていません。SecureRandom オブジェクトをシード付けするには、setSeed メソッドを呼び出します。setSeed が呼び出されなかった場合は、最初に nextBytes メソッドを呼び出したときに、SecureRandom オブジェクト自身によりシード付けが強制的に実行されます。

パラメータ:
algorithm - PRNG アルゴリズムの名前。PRNG アルゴリズムの標準的な名前については、「Java 暗号化アーキテクチャ API 仕様 & リファレンス」の付録 A を参照
戻り値:
新しい SecureRandom オブジェクト
例外:
NoSuchAlgorithmException - 呼び出し側の環境で PRNG アルゴリズムが利用できない場合
導入されたバージョン:
JDK1.2

getInstance

public static SecureRandom getInstance(String algorithm,
                                       String provider)
                                throws NoSuchAlgorithmException,
                                       NoSuchProviderException
指定された PRNG アルゴリズムに対する SecureRandom オブジェクトを作成します。指定されたプロバイダで PRNG の実装が利用できる場合は、そのプロバイダの実装によって提供された PRNG アルゴリズムが使用されます。

この SecureRandom のインスタンスはシード付けされていません。SecureRandom オブジェクトをシード付けするには、setSeed メソッドを呼び出します。setSeed が呼び出されなかった場合は、最初に nextBytes メソッドを呼び出したときに、SecureRandom オブジェクト自身によりシード付けが強制的に実行されます。

パラメータ:
algorithm - PRNG アルゴリズムの名前。PRNG アルゴリズムの標準的な名前については、「Java 暗号化アーキテクチャ API 仕様 & リファレンス」の付録 A を参照
provider - プロバイダの名前
戻り値:
新しい SecureRandom オブジェクト
例外:
NoSuchAlgorithmException - 要求された PRNG の実装がプロバイダから利用できない場合
NoSuchProviderException - プロバイダが設定されていない場合
導入されたバージョン:
JDK1.2
関連項目:
Provider

getProvider

public final Provider getProvider()
この SecureRandom オブジェクトのプロバイダを返します。
戻り値:
このSecureRandom オブジェクトのプロバイダ

setSeed

public void setSeed(byte[] seed)
この乱数オブジェクトを再シードします。指定されたシードは、既存のシードを置き換えるのではなく補足します。このため、呼び出しを繰り返しても、無作為性が損なわれないことが保証されます。
パラメータ:
seed - シード

setSeed

public void setSeed(long seed)
指定された long seed に含まれている 8 バイトを使用して、この乱数オブジェクトを再シードします。指定されたシードは、既存のシードを置き換えるものではなく補足するものです。したがって、呼び出しを繰り返しても、無作為性が減少しないことが保証されています。

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

パラメータ:
seed - シード
オーバーライド:
クラス Random 内の setSeed

nextBytes

public void nextBytes(byte[] bytes)
ユーザが指定したバイト数の乱数バイトを生成します。このメソッドは、このクラスが返すシードバイトを除く乱数エンティティのすべてのベースとして使用されます。
パラメータ:
bytes - 乱数バイトを充填する配列
オーバーライド:
クラス Random 内の nextBytes

next

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

getSeed

public static byte[] getSeed(int numBytes)
指定されたバイト数のシードバイトを返します。シードバイトの計算には、このクラスが自身をシードするのに使用するシード生成アルゴリズムが使用されます。この呼び出しを使うと、ほかの乱数ジェネレータをシードできます。

このメソッドは、下位互換のためにだけ提供されています。呼び出し側からは、代替の getInstance メソッドのうちの 1 つを使用して SecureRandom オブジェクトを取得したすぐあとに、setSeed メソッドを呼び出してそのオブジェクトからシードバイトを取得することをお勧めします。

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

generateSeed

public byte[] generateSeed(int numBytes)
指定されたバイト数のシードバイトを返します。シードバイトの計算には、このクラスが自身をシードするのに使用するシード生成アルゴリズムが使用されます。この呼び出しを使うと、ほかの乱数ジェネレータをシードできます。
パラメータ:
numBytes - 生成するシードバイト数
戻り値:
シードバイト

Java プラットフォーム 1.2

バグや機能要求の報告
新しい javadoc の表示についてのコメントやご提案
Java は、米国およびその他の国における米国 Sun Microsystems, Inc. の商標もしくは登録商標です。
Copyright 1993-1998 Sun Microsystems, Inc. 901 San Antonio Road,
Palo Alto, California, 94303, U.S.A. All Rights Reserved.