public class SecureRandom extends Random
強力な暗号化による乱数は、「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);注:実装によっては、
generateSeed
メソッドおよび nextBytes
メソッドは、たとえばそれらが UNIX 系オペレーティングシステムの /dev/random から読み取る必要がある場合に、エントロピーが収集されるときにブロックされることがあります。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 バイトを使用して、この乱数オブジェクトを再シードします。 |
nextBoolean, nextDouble, nextFloat, nextGaussian, nextInt, nextInt, nextLong
public SecureRandom()
このコンストラクタは、最優先の Provider から順に、登録済みのセキュリティー Provider のリストをトラバースします。SecureRandom (RNG) アルゴリズムをサポートする最初の Provider の SecureRandomSpi 実装をカプセル化する新しい SecureRandom オブジェクトが返されます。RNG アルゴリズムをサポートする Provider が存在しない場合、実装固有のデフォルト値が返されます。
登録済みプロバイダのリストは、Security.getProviders()
メソッド経由で取得できます。
RNG アルゴリズムの標準名については、Java 暗号化アーキテクチャー標準アルゴリズム名のドキュメントの SecureRandom のセクションを参照。
シードされていない SecureRandom オブジェクトが返されます。返されたオブジェクトをシードするには、setSeed
メソッドを呼び出します。setSeed
が呼び出されなかった場合、最初に nextBytes
メソッドを呼び出したときに、SecureRandom オブジェクトが強制的にシードされます。setSeed
が以前に呼び出されている場合、この自己シードは行われません。
public SecureRandom(byte[] seed)
このコンストラクタは、最優先の Provider から順に、登録済みのセキュリティー Provider のリストをトラバースします。SecureRandom (RNG) アルゴリズムをサポートする最初の Provider の SecureRandomSpi 実装をカプセル化する新しい SecureRandom オブジェクトが返されます。RNG アルゴリズムをサポートする Provider が存在しない場合、実装固有のデフォルト値が返されます。
登録済みプロバイダのリストは、Security.getProviders()
メソッド経由で取得できます。
RNG アルゴリズムの標準名については、Java 暗号化アーキテクチャー標準アルゴリズム名のドキュメントの SecureRandom のセクションを参照。
seed
- シード。protected SecureRandom(SecureRandomSpi secureRandomSpi, Provider provider)
secureRandomSpi
- SecureRandom の実装。provider
- プロバイダ。public static SecureRandom getInstance(String algorithm) throws NoSuchAlgorithmException
このメソッドは、最優先の Provider から順に、登録済みのセキュリティー Provider のリストをトラバースします。指定されたアルゴリズムをサポートする最初の Provider の SecureRandomSpi 実装をカプセル化する新しい SecureRandom オブジェクトが返されます。
登録済みプロバイダのリストは、Security.getProviders()
メソッド経由で取得できます。
シードされていない SecureRandom オブジェクトが返されます。返されたオブジェクトをシードするには、setSeed
メソッドを呼び出します。setSeed
が呼び出されなかった場合、最初に nextBytes
メソッドを呼び出したときに、SecureRandom オブジェクトが強制的にシードされます。setSeed
が以前に呼び出されている場合、この自己シードは行われません。
algorithm
- RNG アルゴリズムの名前。RNG アルゴリズムの標準名については、Java 暗号化アーキテクチャー標準アルゴリズム名のドキュメントの SecureRandom のセクションを参照。NoSuchAlgorithmException
- 指定したアルゴリズムの SecureRandomSpi 実装をサポートする Provider が存在しない場合。Provider
public static SecureRandom getInstance(String algorithm, String provider) throws NoSuchAlgorithmException, NoSuchProviderException
指定されたプロバイダの SecureRandomSpi 実装をカプセル化する新しい SecureRandom オブジェクトが返されます。指定したプロバイダは、セキュリティープロバイダリストに登録する必要があります。
登録済みプロバイダのリストは、Security.getProviders()
メソッド経由で取得できます。
シードされていない SecureRandom オブジェクトが返されます。返されたオブジェクトをシードするには、setSeed
メソッドを呼び出します。setSeed
が呼び出されなかった場合、最初に nextBytes
メソッドを呼び出したときに、SecureRandom オブジェクトが強制的にシードされます。setSeed
が以前に呼び出されている場合、この自己シードは行われません。
algorithm
- RNG アルゴリズムの名前。RNG アルゴリズムの標準名については、Java 暗号化アーキテクチャー標準アルゴリズム名のドキュメントの SecureRandom のセクションを参照。provider
- プロバイダ名。NoSuchAlgorithmException
- 指定されたプロバイダに指定されたアルゴリズムの SecureRandomSpi の実装がない場合。NoSuchProviderException
- 指定されたプロバイダがセキュリティープロバイダリストに登録されていない場合。IllegalArgumentException
- プロバイダ名が null または空の場合。Provider
public static SecureRandom getInstance(String algorithm, Provider provider) throws NoSuchAlgorithmException
指定された Provider オブジェクトの SecureRandomSpi 実装をカプセル化する新しい SecureRandom オブジェクトが返されます。指定された Provider オブジェクトは、プロバイダリストに登録する必要はありません。
シードされていない SecureRandom オブジェクトが返されます。返されたオブジェクトをシードするには、setSeed
メソッドを呼び出します。setSeed
が呼び出されなかった場合、最初に nextBytes
メソッドを呼び出したときに、SecureRandom オブジェクトが強制的にシードされます。setSeed
が以前に呼び出されている場合、この自己シードは行われません。
algorithm
- RNG アルゴリズムの名前。RNG アルゴリズムの標準名については、Java 暗号化アーキテクチャー標準アルゴリズム名のドキュメントの SecureRandom のセクションを参照。provider
- プロバイダ。NoSuchAlgorithmException
- 指定された Provider オブジェクトに指定されたアルゴリズムの SecureRandomSpi の実装がない場合。IllegalArgumentException
- 指定されたプロバイダが null の場合。Provider
public final Provider getProvider()
public String getAlgorithm()
unknown
。public void setSeed(byte[] seed)
seed
- シード。getSeed(int)
public void setSeed(long seed)
long seed
に含まれている 8 バイトを使用して、この乱数オブジェクトを再シードします。与えられたシードは、既存のシードと置き換わるのではなく、既存のシードに追加されます。これにより、呼び出しを繰り返しても、ランダム性が減少しないことが保証されます。
このメソッドは、java.util.Random
との互換性のために定義されています。
setSeed
、クラス: Random
seed
- シード。getSeed(int)
public void nextBytes(byte[] bytes)
setSeed
が以前に呼び出されたことがない場合は、このメソッドを最初に呼び出したとき、この SecureRandom オブジェクトが強制的にシードされます。setSeed
が以前に呼び出されている場合、この自己シードは行われません。
protected final int next(int numBits)
java.util.Random
メソッドをオーバーライドし、そのクラス (たとえば、nextInt
、nextLong
、および nextFloat
) から継承するメソッドのすべてに乱数ビットの発生源を提供するのに役立ちます。public static byte[] getSeed(int numBytes)
このメソッドは、下位互換のためだけに提供されています。呼び出し側からは、代替の getInstance
メソッドのうちの 1 つを使用して SecureRandom オブジェクトを取得したすぐあとに、generateSeed
メソッドを呼び出してそのオブジェクトからシードバイトを取得することをお勧めします。
numBytes
- 生成するシードバイト数。setSeed(byte[])
public byte[] generateSeed(int numBytes)
numBytes
- 生成するシードバイト数。 バグまたは機能を送信
詳細な API リファレンスおよび開発者ドキュメントについては、Java SE のドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright © 1993, 2013, Oracle and/or its affiliates. All rights reserved.