JavaTM Platform
Standard Ed. 6

java.security
クラス SecureRandom

java.lang.Object
  上位を拡張 java.util.Random
      上位を拡張 java.security.SecureRandom
すべての実装されたインタフェース:
Serializable

public class SecureRandom
extends Random

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

強力な暗号化による乱数は、「FIPS 140-2, Security Requirements for Cryptographic Modules」 のセクション 4.9.1 に指定されている統計的乱数生成テストに最低限適合しています。また、SecureRandom は順序不定で出力を行う必要があります。このため、SecureRamdom オブジェクトに渡されるすべてのシード素材が予測不可能で、SecureRandom のすべての出力シーケンスが「RFC 1750: Randomness Recommendations for Security」に記述されているとおり、強力に暗号化されている必要があります。  

呼び出し側は、引数なしのコンストラクタか、任意の getInstance メソッドを使って、SecureRandom インスタンスを取得します。  

      SecureRandom random = new SecureRandom();
 
 

多くの SecureRandom 実装は擬似乱数ジェネレータ (PRNG) の形式です。これは、特定の決定性アルゴリズムを使って真の乱数シードから擬似乱数シーケンスを生成することを意味します。実装の中には、真の乱数を生成するものもあれば、両方の技術の組み合わせを使用するものもあります。  

SecureRandom の一般的な呼び出し側は、次のメソッドを呼び出してランダムバイトを取得します。  

      SecureRandom random = new SecureRandom();
      byte bytes[] = new byte[20];
      random.nextBytes(bytes);
 
 

呼び出し側は、次の例のように generateSeed メソッドを呼び出して、指定された数のシードバイトを生成することもできます。生成されたシードバイトは、たとえば別の乱数ジェネレータをシードするために使用します。  

      byte seed[] = random.generateSeed(20);
 

関連項目:
SecureRandomSpi, Random, 直列化された形式

コンストラクタの概要
  SecureRandom()
          デフォルトの乱数アルゴリズムを実装する、セキュリティー保護された乱数ジェネレータ (RNG) を構築します。
  SecureRandom(byte[] seed)
          デフォルトの乱数アルゴリズムを実装する、セキュリティー保護された乱数ジェネレータ (RNG) を構築します。
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
 

コンストラクタの詳細

SecureRandom

public SecureRandom()
デフォルトの乱数アルゴリズムを実装する、セキュリティー保護された乱数ジェネレータ (RNG) を構築します。  

このコンストラクタは、最優先の Provider から順に、登録済みのセキュリティー Provider のリストをトラバースします。SecureRandom (RNG) アルゴリズムをサポートする最初の Provider の SecureRandomSpi 実装をカプセル化する新しい SecureRandom オブジェクトが返されます。RNG アルゴリズムをサポートする Provider が存在しない場合、実装固有のデフォルト値が返されます。  

登録済みプロバイダのリストは、Security.getProviders() メソッド経由で取得できます。  

RNG アルゴリズムの標準的な名前については、「Java 暗号化アーキテクチャー API の仕様およびリファレンス」の付録 A を参照  

シードされていない SecureRandom オブジェクトが返されます。返されたオブジェクトをシードするには、setSeed メソッドを呼び出します。setSeed が呼び出されなかった場合、最初に nextBytes メソッドを呼び出したときに、SecureRandom オブジェクトが強制的にシードされます。setSeed が以前に呼び出されている場合、この自己シードは行われません。


SecureRandom

public SecureRandom(byte[] seed)
デフォルトの乱数アルゴリズムを実装する、セキュリティー保護された乱数ジェネレータ (RNG) を構築します。SecureRandom インスタンスは、指定のシードバイトでシードされます。  

このコンストラクタは、最優先の Provider から順に、登録済みのセキュリティー Provider のリストをトラバースします。SecureRandom (RNG) アルゴリズムをサポートする最初の Provider の SecureRandomSpi 実装をカプセル化する新しい SecureRandom オブジェクトが返されます。RNG アルゴリズムをサポートする Provider が存在しない場合、実装固有のデフォルト値が返されます。  

登録済みプロバイダのリストは、Security.getProviders() メソッド経由で取得できます。  

RNG アルゴリズムの標準的な名前については、「Java 暗号化アーキテクチャー API の仕様およびリファレンス」の付録 A を参照

パラメータ:
seed - シード

SecureRandom

protected SecureRandom(SecureRandomSpi secureRandomSpi,
                       Provider provider)
SecureRandom オブジェクトを作成します。

パラメータ:
secureRandomSpi - SecureRandom の実装
provider - プロバイダ
メソッドの詳細

getInstance

public static SecureRandom getInstance(String algorithm)
                                throws NoSuchAlgorithmException
指定された乱数ジェネレータ (RNG) アルゴリズムを実装した SecureRandom オブジェクトを返します。  

このメソッドは、最優先の Provider から順に、登録済みのセキュリティー Provider のリストをトラバースします。指定されたアルゴリズムをサポートする最初の Provider の SecureRandomSpi 実装をカプセル化する新しい SecureRandom オブジェクトが返されます。  

登録済みプロバイダのリストは、Security.getProviders() メソッド経由で取得できます。  

シードされていない SecureRandom オブジェクトが返されます。返されたオブジェクトをシードするには、setSeed メソッドを呼び出します。setSeed が呼び出されなかった場合、最初に nextBytes メソッドを呼び出したときに、SecureRandom オブジェクトが強制的にシードされます。setSeed が以前に呼び出されている場合、この自己シードは行われません。

パラメータ:
algorithm - RNG アルゴリズムの名前。RNG アルゴリズムの標準的な名前については、「Java 暗号化アーキテクチャー API の仕様およびリファレンス」の付録 A を参照
戻り値:
新規 SecureRandom オブジェクト
例外:
NoSuchAlgorithmException - 指定されたアルゴリズムの SecureRandomSpi 実装をサポートする Provider が存在しない場合
導入されたバージョン:
1.2
関連項目:
Provider

getInstance

public static SecureRandom getInstance(String algorithm,
                                       String provider)
                                throws NoSuchAlgorithmException,
                                       NoSuchProviderException
指定された乱数ジェネレータ (RNG) アルゴリズムを実装した SecureRandom オブジェクトを返します。  

指定されたプロバイダの SecureRandomSpi 実装をカプセル化する新しい SecureRandom オブジェクトが返されます。指定したプロバイダは、セキュリティープロバイダリストに登録する必要があります。  

登録済みプロバイダのリストは、Security.getProviders() メソッド経由で取得できます。  

シードされていない SecureRandom オブジェクトが返されます。返されたオブジェクトをシードするには、setSeed メソッドを呼び出します。setSeed が呼び出されなかった場合、最初に nextBytes メソッドを呼び出したときに、SecureRandom オブジェクトが強制的にシードされます。setSeed が以前に呼び出されている場合、この自己シードは行われません。

パラメータ:
algorithm - RNG アルゴリズムの名前。RNG アルゴリズムの標準的な名前については、「Java 暗号化アーキテクチャー API の仕様およびリファレンス」の付録 A を参照
provider - プロバイダ名
戻り値:
新規 SecureRandom オブジェクト
例外:
NoSuchAlgorithmException - 指定されたプロバイダに指定されたアルゴリズムの SecureRandomSpi 実装がない場合
NoSuchProviderException - 指定されたプロバイダがセキュリティープロバイダリストに登録されていない場合
IllegalArgumentException - プロバイダの名前が null か空の場合
導入されたバージョン:
1.2
関連項目:
Provider

getInstance

public static SecureRandom getInstance(String algorithm,
                                       Provider provider)
                                throws NoSuchAlgorithmException
指定された乱数ジェネレータ (RNG) アルゴリズムを実装した SecureRandom オブジェクトを返します。  

指定された Provider オブジェクトの SecureRandomSpi 実装をカプセル化する新しい SecureRandom オブジェクトが返されます。指定された Provider オブジェクトは、プロバイダリストに登録する必要はありません。  

シードされていない SecureRandom オブジェクトが返されます。返されたオブジェクトをシードするには、setSeed メソッドを呼び出します。setSeed が呼び出されなかった場合、最初に nextBytes メソッドを呼び出したときに、SecureRandom オブジェクトが強制的にシードされます。setSeed が以前に呼び出されている場合、この自己シードは行われません。

パラメータ:
algorithm - RNG アルゴリズムの名前。RNG アルゴリズムの標準的な名前については、「Java 暗号化アーキテクチャー API の仕様およびリファレンス」の付録 A を参照
provider - プロバイダ
戻り値:
新規 SecureRandom オブジェクト
例外:
NoSuchAlgorithmException - 指定された Provider オブジェクトに指定されたアルゴリズムの SecureRandomSpi 実装がない場合
IllegalArgumentException - 指定されたプロバイダが null の場合
導入されたバージョン:
1.4
関連項目:
Provider

getProvider

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

戻り値:
この SecureRandom オブジェクトのプロバイダ

getAlgorithm

public String getAlgorithm()
この SecureRandom オブジェクトが実装しているアルゴリズムの名前を返します。

戻り値:
アルゴリズムの名前。 アルゴリズム名を特定できない場合は unknown
導入されたバージョン:
1.5

setSeed

public void setSeed(byte[] seed)
乱数オブジェクトを再シードします。与えられたシードは、既存のシードと置き換わるのではなく、既存のシードに追加されます。これにより、呼び出しを繰り返しても、ランダム性が減少しないことが保証されます。

パラメータ:
seed - シード
関連項目:
getSeed(int)

setSeed

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

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

オーバーライド:
クラス Random 内の setSeed
パラメータ:
seed - シード
関連項目:
getSeed(int)

nextBytes

public void nextBytes(byte[] bytes)
ユーザーが指定したバイト数の乱数バイト数を生成します。  

setSeed が以前に呼び出されたことがない場合は、このメソッドを最初に呼び出したとき、この SecureRandom オブジェクトが強制的にシードされます。setSeed が以前に呼び出されている場合、この自己シードは行われません。

オーバーライド:
クラス Random 内の nextBytes
パラメータ:
bytes - 乱数バイトを充填する配列

next

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

オーバーライド:
クラス Random 内の next
パラメータ:
numBits - 0 <= numBits <= 32 の場合、生成する擬似乱数ビットの数
戻り値:
ユーザー指定の擬似乱数ビット (右詰め、先頭にゼロ埋め込み) を含む int

getSeed

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

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

パラメータ:
numBytes - 生成するシードバイト数
戻り値:
シードバイト
関連項目:
setSeed(byte[])

generateSeed

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

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

JavaTM Platform
Standard Ed. 6

バグの報告と機能のリクエスト
さらに詳しい API リファレンスおよび開発者ドキュメントについては、Java SE 開発者用ドキュメントを参照してください。開発者向けの詳細な解説、概念の概要、用語の定義、バグの回避策、およびコード実例が含まれています。

Copyright 2009 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。