クラスSecureRandom
- すべての実装されたインタフェース:
Serializable, RandomGenerator
強力な暗号化による乱数は、「FIPS 140-2, Security Requirements for Cryptographic Modules」のセクション4.9.1に指定されている統計的乱数生成テストに最低限適合しています。 また、SecureRandomは非決定的な出力を生成する必要があります。 したがって、SecureRandomオブジェクトに渡されるシード・マテリアルは予測できない必要があり、「RFC 4086: セキュリティのランダム性要件」で説明されているように、すべてのSecureRandom出力シーケンスは暗号的に強力である必要があります。
多くのSecureRandom実装は、疑似乱数ジェネレータ(PRNG(deterministic random bits generator、DRBGとも呼ばれる))の形式です。これは、決定的アルゴリズムを使用してランダム・シードから疑似乱数シーケンスを生成することを意味します。 実装の中には、真の乱数を生成するものもあれば、両方の技術の組み合わせを使用するものもあります。
呼出し側は、引数なしコンストラクタまたはgetInstanceメソッドのいずれかを介してSecureRandomインスタンスを取得します。 たとえば、
SecureRandom r1 = new SecureRandom();
SecureRandom r2 = SecureRandom.getInstance("NativePRNG");
SecureRandom r3 = SecureRandom.getInstance("DRBG",
DrbgParameters.instantiation(128, RESEED_ONLY, null));
前述の3番目の文は、特定のインスタンス化パラメータをサポートする特定のアルゴリズムのSecureRandomオブジェクトを返します。 実装の有効なインスタンス化パラメータは、この最小リクエストと一致する必要がありますが、必ずしも同じではありません。 たとえば、リクエストに特定の機能が必要ない場合でも、実際のインスタンス化でその機能を提供できます。 実装は、実際に使用されるまでSecureRandomを遅延的にインスタンス化できますが、有効なインスタンス化パラメータは作成直後に決定する必要があり、getParameters()は常に同じ結果を変更せずに返す必要があります。
SecureRandomの典型的な呼び出し元は、以下のメソッドを呼び出してランダムなバイトを取得します:
SecureRandom random = new SecureRandom(); byte[] bytes = new byte[20]; random.nextBytes(bytes);
呼び出し側は、generateSeed(int)メソッドを呼び出して、指定された数のシード・バイトを生成することもできます。(他の乱数ジェネレータをシード):
byte[] seed = random.generateSeed(20);
新しく作成されたPRNG SecureRandomオブジェクトは、(SecureRandom(byte[])によって作成されている場合を除き)にシードされません。 nextBytesへの最初のコールは、実装固有のエントロピ・ソースから自身を強制的にシードします。 setSeedが以前に呼び出されている場合、この自己シードは行われません。
SecureRandomは、reseedまたはsetSeedメソッドをコールして、いつでも再シードできます。 reseedメソッドは、エントロピ・ソースからエントロピ入力を読み取り、自身をリ・シードします。 setSeedメソッドでは、コール元がシードを提供する必要があります。
reseedは、すべてのSecureRandom実装でサポートされない場合があります。
一部のSecureRandom実装では、メソッドの動作をさらに制御するために、nextBytes(byte[], SecureRandomParameters)メソッドおよびreseed(SecureRandomParameters)メソッドでSecureRandomParametersパラメータを使用できます。
ノート: 実装によっては、generateSeed、reseedおよびnextBytesメソッドが、たとえば、様々なUnixに似たオペレーティング・システムでエントロピ・ソースが/dev/randomの場合に、エントロピが収集されるとブロックされることがあります。
スレッドの安全性
SecureRandomオブジェクトは、複数の同時スレッドで安全に使用できます。- 実装要件:
SecureRandomサービス・プロバイダは、プロバイダの登録時に「サービス・プロバイダ属性」 "ThreadSafe"を"true"に設定することで、それがスレッド・セーフであることを通知できます。 それ以外の場合、このクラスはかわりに、SecureRandomSpi実装の次のメソッドへのアクセスを同期します:- 導入されたバージョン:
- 1.1
- 外部仕様
- 関連項目:
-
ネストされたクラスのサマリー
インタフェースで宣言されたネストされたクラス/インタフェース RandomGenerator
RandomGenerator.ArbitrarilyJumpableGenerator, RandomGenerator.JumpableGenerator, RandomGenerator.LeapableGenerator, RandomGenerator.SplittableGenerator, RandomGenerator.StreamableGenerator修飾子と型インタフェース説明static interfaceこのインタフェースは、擬似乱数シーケンスを生成し、任意の量で簡単にjumpを状態サイクルの遠いポイントに送ることができるオブジェクトに共通のプロトコルを提供するように設計されています。static interfaceこのインタフェースは、擬似乱数値を生成するオブジェクトに共通のプロトコルを提供するように設計されており、状態サイクル内の離れた場所に適度な量(たとえば264)で簡単に前方にジャンプできます。static interfaceこのインタフェースは、擬似乱数シーケンスを生成するオブジェクトに共通のプロトコルを提供するように設計されており、その状態サイクルの非常に遠いポイントに簡単に前方にジャンプできるだけでなく、飛躍(たとえば、2128)することもできます。static interfaceこのインタフェースは、擬似乱数値の順序を生成するオブジェクトに共通プロトコルを提供するように設計されており、それぞれ(元のものと新しいもの)という2つのオブジェクトに「分割」で、同じプロトコル(したがって、無期限に再帰的に分割できます)に従うことができます。static interfaceRandomGenerator.StreamableGeneratorインタフェースは、RandomGeneratorインタフェースを補強して、RandomGeneratorオブジェクトのストリームを返すメソッドを提供します。 -
コンストラクタのサマリー
コンストラクタ修飾子コンストラクタ説明デフォルトの乱数アルゴリズムを実装する、セキュリティ保護された乱数ジェネレータ(RNG)を構築します。SecureRandom(byte[] seed) デフォルトの乱数アルゴリズムを実装する、セキュリティ保護された乱数ジェネレータ(RNG)を構築します。protectedSecureRandom(SecureRandomSpi secureRandomSpi, Provider provider) SecureRandomオブジェクトを作成します。 -
メソッドのサマリー
修飾子と型メソッド説明byte[]generateSeed(int numBytes) 指定されたバイト数のシード・バイトを返します。シード・バイトの計算には、このクラスが自身をシードするのに使用するシード生成アルゴリズムが使用されます。このSecureRandomオブジェクトによって実装されたアルゴリズムの名前を返します。static SecureRandomgetInstance(String algorithm) 指定された乱数ジェネレータの(RNG)アルゴリズムを実装するSecureRandomオブジェクトを返します。static SecureRandomgetInstance(String algorithm, String provider) 指定された乱数ジェネレータの(RNG)アルゴリズムを実装するSecureRandomオブジェクトを返します。static SecureRandomgetInstance(String algorithm, Provider provider) 指定された乱数ジェネレータの(RNG)アルゴリズムを実装するSecureRandomオブジェクトを返します。static SecureRandomgetInstance(String algorithm, SecureRandomParameters params) 指定された乱数ジェネレータの(RNG)アルゴリズムを実装し、指定されたSecureRandomParametersリクエストをサポートするSecureRandomオブジェクトを返します。static SecureRandomgetInstance(String algorithm, SecureRandomParameters params, String provider) 指定された乱数ジェネレータの(RNG)アルゴリズムを実装し、指定されたSecureRandomParametersリクエストをサポートするSecureRandomオブジェクトを返します。static SecureRandomgetInstance(String algorithm, SecureRandomParameters params, Provider provider) 指定された乱数ジェネレータの(RNG)アルゴリズムを実装し、指定されたSecureRandomParametersリクエストをサポートするSecureRandomオブジェクトを返します。static SecureRandomsecurerandom.strongAlgorithmsSecurityプロパティで指定されたアルゴリズムまたはプロバイダを使用して選択されたSecureRandomオブジェクトを返します。このSecureRandomインスタンスの有効なSecureRandomParametersを返します。final ProviderこのSecureRandomオブジェクトのプロバイダを返します。static byte[]getSeed(int numBytes) 指定されたバイト数のシード・バイトを返します。シード・バイトの計算には、このクラスが自身をシードするのに使用するシード生成アルゴリズムが使用されます。protected final intnext(int numBits) ユーザーが指定した数の擬似乱数ビット(右詰、ゼロ埋め込み)を含む整数を生成します。voidnextBytes(byte[] bytes) ユーザーが指定したバイト数の乱数バイト数を生成します。voidnextBytes(byte[] bytes, SecureRandomParameters params) 追加パラメータを使用して、ユーザー指定のランダム・バイト数を生成します。voidreseed()このSecureRandomを、エントロピ・ソースから読み取られたエントロピ入力で再シードします。voidreseed(SecureRandomParameters params) このSecureRandomを、エントロピ・ソースから読み取られたエントロピ入力で追加パラメータとともに再シードします。voidsetSeed(byte[] seed) このランダムなオブジェクトを、指定されたシードに再シードします。voidsetSeed(long seed) 指定されたlong seedに含まれている8バイトを使用して、この乱数オブジェクトを再シードします。toString()このSecureRandomの人間が読める文字列表現を返します。クラス Randomで宣言されたメソッド
doubles, doubles, doubles, doubles, from, ints, ints, ints, ints, longs, longs, longs, longs, nextBoolean, nextDouble, nextFloat, nextGaussian, nextInt, nextInt, nextLong修飾子と型メソッド説明doubles()0(含む)から1(含まない)までの擬似乱数double値を含む、事実上無制限のストリームを返します。doubles(double randomNumberOrigin, double randomNumberBound) 指定された起点(含む)と境界(含まない)に準拠した擬似乱数double値を含む、事実上無制限のストリームを返します。doubles(long streamSize) 0(含む)から1(含まない)までの擬似乱数double値を、指定されたstreamSize数だけ生成するストリームを返します。doubles(long streamSize, double randomNumberOrigin, double randomNumberBound) 指定された起点(含む)と境界(含まない)に準拠した擬似乱数double値を、指定されたstreamSize数だけ生成するストリームを返します。static Randomfrom(RandomGenerator generator) メソッド・コールをRandomGenerator引数に委任するRandomのインスタンスを返します。ints()擬似乱数int値を含む、事実上無制限のストリームを返します。ints(int randomNumberOrigin, int randomNumberBound) 指定された起点(含む)と境界(含まない)に準拠した擬似乱数int値を含む、事実上無制限のストリームを返します。ints(long streamSize) 擬似乱数int値を、指定されたstreamSize数だけ生成するストリームを返します。ints(long streamSize, int randomNumberOrigin, int randomNumberBound) 指定された起点(含む)と境界(含まない)に準拠した擬似乱数int値を、指定されたstreamSize数だけ生成するストリームを返します。longs()擬似乱数long値を含む、事実上無制限のストリームを返します。longs(long streamSize) 擬似乱数long値を、指定されたstreamSize数だけ生成するストリームを返します。longs(long randomNumberOrigin, long randomNumberBound) 指定された起点(含む)と境界(含まない)に準拠した擬似乱数long値を含む、事実上無制限のストリームを返します。longs(long streamSize, long randomNumberOrigin, long randomNumberBound) 指定された起点(含む)と境界(含まない)に準拠した擬似乱数longを、指定されたstreamSize数だけ生成するストリームを返します。booleanこの乱数ジェネレータのシーケンスを使って、一様分布のboolean型の次の擬似乱数値を返します。doubleこの乱数ジェネレータのシーケンスを使って、0.0から1.0の範囲で一様分布のdouble型の次の擬似乱数値を返します。floatこの乱数ジェネレータのシーケンスを使って、0.0から1.0の範囲で一様分布のfloat型の次の擬似乱数値を返します。doubleこの乱数ジェネレータのシーケンスを使って、平均0.0、標準偏差1.0のガウス(「正規」)分布のdouble型の擬似乱数値を返します。intnextInt()この乱数ジェネレータのシーケンスを使って、一様分布のint型の次の擬似乱数値を返します。intnextInt(int bound) この乱数ジェネレータのシーケンスを使って、0から指定された値の範囲(0は含むが、その指定された値は含まない)で一様分布のint型の擬似乱数値を返します。longnextLong()この乱数ジェネレータのシーケンスを使って、一様分布のlong型の次の擬似乱数値を返します。クラスオブジェクトで宣言されたメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait修飾子と型メソッド説明protected Objectclone()このオブジェクトのコピーを作成して、返します。booleanこのオブジェクトと他のオブジェクトが等しいかどうかを示します。protected voidfinalize()削除予定のため非推奨: このAPI要素は、将来のバージョンで削除される可能性があります。最終決定は非推奨であり、将来のリリースで削除される可能性があります。final Class<?> getClass()このObjectの実行時クラスを返します。inthashCode()このオブジェクトに対するハッシュ・コード値を返します。final voidnotify()このオブジェクトのモニターで待機中のスレッドを1つ再開します。final voidこのオブジェクトのモニターで待機中のすべてのスレッドを再開します。final voidwait()現在のスレッドが目覚めるまで待機します。通常、notifiedまたはinterruptedです。final voidwait(long timeoutMillis) 現在のスレッドは、通常、notifiedまたはinterruptedであるか、一定のリアルタイムが経過するまで、目覚めるまで待機します。final voidwait(long timeoutMillis, int nanos) 現在のスレッドは、通常、notifiedまたはinterruptedであるか、一定のリアルタイムが経過するまで、目覚めるまで待機します。インタフェースで宣言されたメソッド RandomGenerator
equiDoubles, isDeprecated, nextDouble, nextDouble, nextExponential, nextFloat, nextFloat, nextGaussian, nextInt, nextLong, nextLong修飾子と型メソッド説明default DoubleStreamequiDoubles(double left, double right, boolean isLeftIncluded, boolean isRightIncluded) 疑似ランダムに選択されたdouble値の事実上無制限のストリームを返します。各値は、指定されたleft境界と指定されたright境界の間にあります。default booleanRandomGenerator (algorithm)の実装が非推奨としてマークされている場合はtrueを返します。default doublenextDouble(double bound) ゼロ(包含)と指定した境界(除外)の間の擬似乱数的に選択したdouble値を返します。default doublenextDouble(double origin, double bound) 指定された起点(包含)と指定された境界(除外)の間の擬似乱数的に選択したdouble値を返します。default double平均が1である指数分布から擬似乱数的に選択された、負でないdouble値を返します。default floatnextFloat(float bound) ゼロ(包含)と指定したバインド(除外)の間の擬似乱数的に選択したfloat値を返します。default floatnextFloat(float origin, float bound) 指定された起点(包含)と指定された境界(除外)の間の擬似乱数的に選択したfloat値を返します。default doublenextGaussian(double mean, double stddev) ガウス(正規)分布から擬似乱数的に選択されたdouble値を、引数で指定された平均偏差および標準偏差で返します。default intnextInt(int origin, int bound) 指定された起点(包含)と指定された境界(除外)の間の擬似乱数的に選択したint値を返します。default longnextLong(long bound) ゼロ(包含)と指定した境界(除外)の間の擬似乱数的に選択したlong値を返します。default longnextLong(long origin, long bound) 指定された起点(包含)と指定された境界(除外)の間の擬似乱数的に選択したlong値を返します。
-
コンストラクタの詳細
-
SecureRandom
public SecureRandom()デフォルトの乱数アルゴリズムを実装する、セキュリティ保護された乱数ジェネレータ(RNG)を構築します。このコンストラクタは、最優先のProviderから順に、登録済みのセキュリティProviderのリストをトラバースします。
SecureRandom(RNG)アルゴリズムをサポートする最初のプロバイダからSecureRandomSpi実装をカプセル化する新しいSecureRandomオブジェクトが返されます。 どのプロバイダもRNGアルゴリズムをサポートしていない場合は、実装固有のデフォルトが返されます。登録済みプロバイダのリストは、
Security.getProviders()メソッド経由で取得できます。標準RNGアルゴリズム名の詳細は、「Javaセキュリティ標準アルゴリズム名仕様」の
SecureRandomの項を参照してください。- 外部仕様
-
SecureRandom
public SecureRandom(byte[] seed) デフォルトの乱数アルゴリズムを実装する、セキュリティ保護された乱数ジェネレータ(RNG)を構築します。SecureRandomインスタンスは、指定されたシード・バイトでシードされます。このコンストラクタは、最優先のProviderから順に、登録済みのセキュリティProviderのリストをトラバースします。
SecureRandom(RNG)アルゴリズムをサポートする最初のプロバイダからSecureRandomSpi実装をカプセル化する新しいSecureRandomオブジェクトが返されます。 どのプロバイダもRNGアルゴリズムをサポートしていない場合は、実装固有のデフォルトが返されます。登録済みプロバイダのリストは、
Security.getProviders()メソッド経由で取得できます。標準RNGアルゴリズム名の詳細は、「Javaセキュリティ標準アルゴリズム名仕様」の
SecureRandomの項を参照してください。- パラメータ:
seed- シード。- スロー:
NullPointerException-seedがnullの場合- 外部仕様
-
SecureRandom
protected SecureRandom(SecureRandomSpi secureRandomSpi, Provider provider) SecureRandomオブジェクトを作成します。- パラメータ:
secureRandomSpi-SecureRandom実装。provider- プロバイダ
-
-
メソッドの詳細
-
getInstance
public static SecureRandom getInstance(String algorithm) throws NoSuchAlgorithmException 指定された乱数ジェネレータの(RNG)アルゴリズムを実装するSecureRandomオブジェクトを返します。このメソッドは、最優先のProviderから順に、登録済みのセキュリティProviderのリストをトラバースします。 指定されたアルゴリズムをサポートする最初のプロバイダから
SecureRandomSpi実装をカプセル化する新しいSecureRandomオブジェクトが返されます。登録済みプロバイダのリストは、
Security.getProviders()メソッド経由で取得できます。- 実装上のノート:
- JDKリファレンス実装では、さらに
jdk.security.provider.preferredSecurityプロパティを使用して、指定したアルゴリズムの優先プロバイダ順序を決定します。 これは、Security.getProviders()によって返されるプロバイダの順序とは異なる場合があります。 - パラメータ:
algorithm- RNGアルゴリズムの名前。 標準RNGアルゴリズム名の詳細は、「Javaセキュリティ標準アルゴリズム名仕様」のSecureRandomの項を参照してください。- 戻り値:
- 新しい
SecureRandomオブジェクト - スロー:
NoSuchAlgorithmException-Providerが、指定されたアルゴリズムのSecureRandomSpi実装をサポートしていない場合NullPointerException-algorithmがnullである場合- 導入されたバージョン:
- 1.2
- 外部仕様
- 関連項目:
-
getInstance
public static SecureRandom getInstance(String algorithm, String provider) throws NoSuchAlgorithmException, NoSuchProviderException 指定された乱数ジェネレータの(RNG)アルゴリズムを実装するSecureRandomオブジェクトを返します。指定したプロバイダから
SecureRandomSpi実装をカプセル化する新しいSecureRandomオブジェクトが返されます。 指定したプロバイダは、セキュリティ・プロバイダ・リストに登録する必要があります。登録済みプロバイダのリストは、
Security.getProviders()メソッド経由で取得できます。- パラメータ:
algorithm- RNGアルゴリズムの名前。 標準RNGアルゴリズム名の詳細は、「Javaセキュリティ標準アルゴリズム名仕様」のSecureRandomの項を参照してください。provider- プロバイダ名。- 戻り値:
- 新しい
SecureRandomオブジェクト - スロー:
IllegalArgumentException- プロバイダ名がnullまたは空の場合NoSuchAlgorithmException- 指定されたアルゴリズムのSecureRandomSpi実装が、指定されたプロバイダから利用可能でない場合NoSuchProviderException- 指定されたプロバイダがセキュリティ・プロバイダ・リストに登録されていない場合NullPointerException-algorithmがnullである場合- 導入されたバージョン:
- 1.2
- 外部仕様
- 関連項目:
-
getInstance
public static SecureRandom getInstance(String algorithm, Provider provider) throws NoSuchAlgorithmException 指定された乱数ジェネレータの(RNG)アルゴリズムを実装するSecureRandomオブジェクトを返します。指定したプロバイダから
SecureRandomSpi実装をカプセル化する新しいSecureRandomオブジェクトが返されます。 指定されたプロバイダをプロバイダ・リストに登録する必要はありません。- パラメータ:
algorithm- RNGアルゴリズムの名前。 標準RNGアルゴリズム名の詳細は、「Javaセキュリティ標準アルゴリズム名仕様」のSecureRandomの項を参照してください。provider- プロバイダ- 戻り値:
- 新しい
SecureRandomオブジェクト - スロー:
IllegalArgumentException- 指定されたプロバイダがnullの場合NoSuchAlgorithmException- 指定されたアルゴリズムのSecureRandomSpi実装が、指定されたProviderオブジェクトから使用できない場合NullPointerException-algorithmがnullである場合- 導入されたバージョン:
- 1.4
- 外部仕様
- 関連項目:
-
getInstance
public static SecureRandom getInstance(String algorithm, SecureRandomParameters params) throws NoSuchAlgorithmException 指定された乱数ジェネレータの(RNG)アルゴリズムを実装し、指定されたSecureRandomParametersリクエストをサポートするSecureRandomオブジェクトを返します。このメソッドは、最も優先されるプロバイダから始まる登録済セキュリティ・プロバイダのリストを横断します。 指定されたアルゴリズムをサポートし、指定された
SecureRandomParametersをサポートする最初のプロバイダからSecureRandomSpi実装をカプセル化する新しいSecureRandomオブジェクトが返されます。登録済みプロバイダのリストは、
Security.getProviders()メソッド経由で取得できます。- 実装上のノート:
- JDKリファレンス実装では、さらに
jdk.security.provider.preferredプロパティを使用して、指定されたアルゴリズムの優先プロバイダ順序を決定します。 これは、Security.getProviders()によって返されるプロバイダの順序とは異なる場合があります。 - パラメータ:
algorithm- RNGアルゴリズムの名前。 標準RNGアルゴリズム名の詳細は、「Javaセキュリティ標準アルゴリズム名仕様」のSecureRandomの項を参照してください。params- 新しく作成されたSecureRandomオブジェクトがサポートするSecureRandomParameters。- 戻り値:
- 新しい
SecureRandomオブジェクト - スロー:
IllegalArgumentException- 指定されたパラメータがnullの場合NoSuchAlgorithmException- 指定されたアルゴリズムとパラメータに対してSecureRandomSpi実装をサポートするプロバイダがない場合NullPointerException-algorithmがnullである場合- 導入されたバージョン:
- 9
- 外部仕様
- 関連項目:
-
getInstance
public static SecureRandom getInstance(String algorithm, SecureRandomParameters params, String provider) throws NoSuchAlgorithmException, NoSuchProviderException 指定された乱数ジェネレータの(RNG)アルゴリズムを実装し、指定されたSecureRandomParametersリクエストをサポートするSecureRandomオブジェクトを返します。指定したプロバイダから
SecureRandomSpi実装をカプセル化する新しいSecureRandomオブジェクトが返されます。 指定したプロバイダは、セキュリティ・プロバイダ・リストに登録する必要があります。登録済みプロバイダのリストは、
Security.getProviders()メソッド経由で取得できます。- パラメータ:
algorithm- RNGアルゴリズムの名前。 標準RNGアルゴリズム名の詳細は、「Javaセキュリティ標準アルゴリズム名仕様」のSecureRandomの項を参照してください。params- 新しく作成されたSecureRandomオブジェクトがサポートするSecureRandomParameters。provider- プロバイダ名。- 戻り値:
- 新しい
SecureRandomオブジェクト - スロー:
IllegalArgumentException- プロバイダ名がnullまたは空の場合、またはパラメータがnullの場合NoSuchAlgorithmException- 指定されたプロバイダが、指定されたアルゴリズムおよびパラメータのSecureRandomSpi実装をサポートしていない場合NoSuchProviderException- 指定されたプロバイダがセキュリティ・プロバイダ・リストに登録されていない場合NullPointerException-algorithmがnullである場合- 導入されたバージョン:
- 9
- 外部仕様
- 関連項目:
-
getInstance
public static SecureRandom getInstance(String algorithm, SecureRandomParameters params, Provider provider) throws NoSuchAlgorithmException 指定された乱数ジェネレータの(RNG)アルゴリズムを実装し、指定されたSecureRandomParametersリクエストをサポートするSecureRandomオブジェクトを返します。指定したプロバイダから
SecureRandomSpi実装をカプセル化する新しいSecureRandomオブジェクトが返されます。 指定されたプロバイダをプロバイダ・リストに登録する必要はありません。- パラメータ:
algorithm- RNGアルゴリズムの名前。 標準RNGアルゴリズム名の詳細は、「Javaセキュリティ標準アルゴリズム名仕様」のSecureRandomの項を参照してください。params- 新しく作成されたSecureRandomオブジェクトがサポートするSecureRandomParameters。provider- プロバイダ- 戻り値:
- 新しい
SecureRandomオブジェクト - スロー:
IllegalArgumentException- 指定されたプロバイダまたはパラメータがnullの場合NoSuchAlgorithmException- 指定されたプロバイダが、指定されたアルゴリズムおよびパラメータのSecureRandomSpi実装をサポートしていない場合NullPointerException-algorithmがnullである場合- 導入されたバージョン:
- 9
- 外部仕様
- 関連項目:
-
getProvider
public final Provider getProvider()このSecureRandomオブジェクトのプロバイダを返します。- 戻り値:
- この
SecureRandomオブジェクトのプロバイダ。
-
getAlgorithm
public String getAlgorithm()このSecureRandomオブジェクトによって実装されたアルゴリズムの名前を返します。- 戻り値:
- アルゴリズムの名前。アルゴリズム名を特定できない場合は
unknown。 - 導入されたバージョン:
- 1.5
-
toString
-
getParameters
public SecureRandomParameters getParameters()このSecureRandomインスタンスの有効なSecureRandomParametersを返します。戻り値は、
getInstanceメソッドに渡されるSecureRandomParametersオブジェクトと異なる場合がありますが、このSecureRandomオブジェクトの存続期間中は変更できません。呼出し側は、戻り値を使用して、この
SecureRandomがサポートする機能を確認できます。- 戻り値:
- 有効な
SecureRandomParametersパラメータ、またはパラメータが使用されていない場合はnull。 - 導入されたバージョン:
- 9
- 関連項目:
-
setSeed
public void setSeed(byte[] seed) このランダムなオブジェクトを、指定されたシードに再シードします。 シードは、既存のシードを置き換えるのではなく、補足します。 これにより、呼出しを繰り返しても、ランダム性が減少しないことが保証されます。nextBytesまたはreseedコールの前にsetSeedがコールされた場合、PRNGSecureRandomは自動的にシードされません。 呼び出し側は、seed引数に、このSecureRandomのセキュリティのための十分なエントロピが含まれていることを確認する必要があります。- パラメータ:
seed- シード。- スロー:
NullPointerException-seedがnullの場合- 関連項目:
-
setSeed
public void setSeed(long seed) 指定されたlong seedに含まれている8バイトを使用して、この乱数オブジェクトを再シードします。 与えられたシードは、既存のシードと置き換わるのではなく、既存のシードに追加されます。 これにより、呼出しを繰り返しても、ランダム性が減少しないことが保証されます。nextBytesまたはreseedコールの前にsetSeedがコールされた場合、PRNGSecureRandomは自動的にシードされません。 呼び出し側は、seed引数に、このSecureRandomのセキュリティのための十分なエントロピが含まれていることを確認する必要があります。このメソッドは、
java.util.Randomとの互換性のために定義されています。 -
nextBytes
public void nextBytes(byte[] bytes) ユーザーが指定したバイト数の乱数バイト数を生成します。- 定義:
- インタフェース
RandomGenerator内のnextBytes - オーバーライド:
nextBytes、クラスRandom- パラメータ:
bytes- 乱数バイトを充填する配列。- スロー:
NullPointerException-bytesがnullの場合
-
nextBytes
public void nextBytes(byte[] bytes, SecureRandomParameters params) 追加パラメータを使用して、ユーザー指定のランダム・バイト数を生成します。- パラメータ:
bytes- 乱数バイトを充填する配列params- 追加パラメータ- スロー:
NullPointerException-bytesがnullの場合UnsupportedOperationException- 基本のプロバイダ実装がこのメソッドをオーバーライドしていない場合IllegalArgumentException-paramsがnullの場合、このSecureRandomによって不正またはサポートされていない- 導入されたバージョン:
- 9
-
next
protected final int next(int numBits) ユーザーが指定した数の擬似乱数ビット(右詰、ゼロ埋め込み)を含む整数を生成します。 このメソッドはjava.util.Randomメソッドをオーバーライドし、そのクラス(例:nextInt、nextLongおよびnextFloat)から継承されたすべてのメソッドにランダム・ビットのソースを提供します。 -
getSeed
public static byte[] getSeed(int numBytes) 指定されたバイト数のシード・バイトを返します。シード・バイトの計算には、このクラスが自身をシードするのに使用するシード生成アルゴリズムが使用されます。 この呼出しを使うと、ほかの乱数ジェネレータをシードできます。このメソッドは、下位互換のためだけに提供されています。 呼出し側は、代替の
getInstanceメソッドのいずれかを使用してSecureRandomオブジェクトを取得し、generateSeedメソッドをコールしてそのオブジェクトからシード・バイトを取得することをお薦めします。- パラメータ:
numBytes- 生成するシード・バイト数。- 戻り値:
- シード・バイト。
- スロー:
IllegalArgumentException-numBytesが負の場合- 関連項目:
-
generateSeed
public byte[] generateSeed(int numBytes) 指定されたバイト数のシード・バイトを返します。シード・バイトの計算には、このクラスが自身をシードするのに使用するシード生成アルゴリズムが使用されます。 この呼出しを使うと、ほかの乱数ジェネレータをシードできます。- パラメータ:
numBytes- 生成するシード・バイト数。- 戻り値:
- シード・バイト。
- スロー:
IllegalArgumentException-numBytesが負の場合
-
getInstanceStrong
public static SecureRandom getInstanceStrong() throws NoSuchAlgorithmExceptionsecurerandom.strongAlgorithmsSecurityプロパティで指定されたアルゴリズムまたはプロバイダを使用して選択されたSecureRandomオブジェクトを返します。RSA公開/非公開キーのような付加価値の高い永続的な秘密情報を作成する場合など、状況によっては強力な乱数値が必要になります。 アプリケーションが適切で強力な
SecureRandom実装を選択できるようにするため、Javaディストリビューションでは、securerandom.strongAlgorithmsセキュリティ・プロパティに既知の強力なSecureRandom実装のリストが含まれています。Javaプラットフォームのすべての実装は、強力な
SecureRandom実装を1つ以上サポートする必要があります。- 戻り値:
securerandom.strongAlgorithmsセキュリティ・プロパティで示される強力なSecureRandom実装- スロー:
NoSuchAlgorithmException- アルゴリズムが存在しない場合- 導入されたバージョン:
- 1.8
- 関連項目:
-
reseed
public void reseed()このSecureRandomを、エントロピ・ソースから読み取られたエントロピ入力で再シードします。- スロー:
UnsupportedOperationException- 基礎となるプロバイダ実装がこのメソッドをオーバーライドしていない場合。- 導入されたバージョン:
- 9
-
reseed
public void reseed(SecureRandomParameters params) このSecureRandomを、エントロピ・ソースから読み取られたエントロピ入力で追加パラメータとともに再シードします。エントロピはエントロピ源から取得されることに注意してください。
paramsの一部のデータにはエントロピが含まれている場合がありますが、その主な用途は多様性を提供することです。- パラメータ:
params- 余分なパラメータ- スロー:
UnsupportedOperationException- 基礎となるプロバイダ実装がこのメソッドをオーバーライドしていない場合。IllegalArgumentException-paramsがnullの場合、このSecureRandomによって不正またはサポートされていない- 導入されたバージョン:
- 9
-