クラスSecureRandom

java.lang.Object
java.util.Random
java.security.SecureRandom
すべての実装されたインタフェース:
Serializable, RandomGenerator

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

強力な暗号化による乱数は、「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パラメータを使用できます。

ノート: 実装によっては、generateSeedreseedおよび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 interface 
    RandomGenerator.StreamableGeneratorインタフェースは、RandomGeneratorインタフェースを補強して、RandomGeneratorオブジェクトのストリームを返すメソッドを提供します。
  • コンストラクタのサマリー

    コンストラクタ
    修飾子
    コンストラクタ
    説明
     
    デフォルトの乱数アルゴリズムを実装する、セキュリティ保護された乱数ジェネレータ(RNG)を構築します。
     
    SecureRandom(byte[] seed)
    デフォルトの乱数アルゴリズムを実装する、セキュリティ保護された乱数ジェネレータ(RNG)を構築します。
    protected
    SecureRandom(SecureRandomSpi secureRandomSpi, Provider provider)
    SecureRandomオブジェクトを作成します。
  • メソッドのサマリー

    修飾子と型
    メソッド
    説明
    byte[]
    generateSeed(int numBytes)
    指定されたバイト数のシード・バイトを返します。シード・バイトの計算には、このクラスが自身をシードするのに使用するシード生成アルゴリズムが使用されます。
    このSecureRandomオブジェクトによって実装されたアルゴリズムの名前を返します。
    getInstance(String algorithm)
    指定された乱数ジェネレータの(RNG)アルゴリズムを実装するSecureRandomオブジェクトを返します。
    getInstance(String algorithm, String provider)
    指定された乱数ジェネレータの(RNG)アルゴリズムを実装するSecureRandomオブジェクトを返します。
    getInstance(String algorithm, Provider provider)
    指定された乱数ジェネレータの(RNG)アルゴリズムを実装するSecureRandomオブジェクトを返します。
    指定された乱数ジェネレータの(RNG)アルゴリズムを実装し、指定されたSecureRandomParametersリクエストをサポートするSecureRandomオブジェクトを返します。
    getInstance(String algorithm, SecureRandomParameters params, String provider)
    指定された乱数ジェネレータの(RNG)アルゴリズムを実装し、指定されたSecureRandomParametersリクエストをサポートするSecureRandomオブジェクトを返します。
    getInstance(String algorithm, SecureRandomParameters params, Provider provider)
    指定された乱数ジェネレータの(RNG)アルゴリズムを実装し、指定されたSecureRandomParametersリクエストをサポートするSecureRandomオブジェクトを返します。
    securerandom.strongAlgorithmsSecurityプロパティで指定されたアルゴリズムまたはプロバイダを使用して選択されたSecureRandomオブジェクトを返します。
    このSecureRandomインスタンスの有効なSecureRandomParametersを返します。
    final Provider
    このSecureRandomオブジェクトのプロバイダを返します。
    static byte[]
    getSeed(int numBytes)
    指定されたバイト数のシード・バイトを返します。シード・バイトの計算には、このクラスが自身をシードするのに使用するシード生成アルゴリズムが使用されます。
    protected final int
    next(int numBits)
    ユーザーが指定した数の擬似乱数ビット(右詰、ゼロ埋め込み)を含む整数を生成します。
    void
    nextBytes(byte[] bytes)
    ユーザーが指定したバイト数の乱数バイト数を生成します。
    void
    nextBytes(byte[] bytes, SecureRandomParameters params)
    追加パラメータを使用して、ユーザー指定のランダム・バイト数を生成します。
    void
    このSecureRandomを、エントロピ・ソースから読み取られたエントロピ入力で再シードします。
    void
    このSecureRandomを、エントロピ・ソースから読み取られたエントロピ入力で追加パラメータとともに再シードします。
    void
    setSeed(byte[] seed)
    このランダムなオブジェクトを、指定されたシードに再シードします。
    void
    setSeed(long seed)
    指定されたlong seedに含まれている8バイトを使用して、この乱数オブジェクトを再シードします。
    このSecureRandomの人間が読める文字列表現を返します。

    クラス Randomで宣言されたメソッド

    doubles, doubles, doubles, doubles, from, ints, ints, ints, ints, longs, longs, longs, longs, nextBoolean, nextDouble, nextFloat, nextGaussian, nextInt, nextInt, nextLong
    修飾子と型
    メソッド
    説明
    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 Random
    from(RandomGenerator generator)
    メソッド・コールをRandomGenerator引数に委任するRandomのインスタンスを返します。
    擬似乱数int値を含む、事実上無制限のストリームを返します。
    ints(int randomNumberOrigin, int randomNumberBound)
    指定された起点(含む)と境界(含まない)に準拠した擬似乱数 int値を含む、事実上無制限のストリームを返します。
    ints(long streamSize)
    擬似乱数int値を、指定されたstreamSize数だけ生成するストリームを返します。
    ints(long streamSize, int randomNumberOrigin, int randomNumberBound)
    指定された起点(含む)と境界(含まない)に準拠した擬似乱数int値を、指定されたstreamSize数だけ生成するストリームを返します。
    擬似乱数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型の擬似乱数値を返します。
    int
    この乱数ジェネレータのシーケンスを使って、一様分布のint型の次の擬似乱数値を返します。
    int
    nextInt(int bound)
    この乱数ジェネレータのシーケンスを使って、0から指定された値の範囲(0は含むが、その指定された値は含まない)で一様分布のint型の擬似乱数値を返します。
    long
    この乱数ジェネレータのシーケンスを使って、一様分布のlong型の次の擬似乱数値を返します。

    クラスオブジェクトで宣言されたメソッド

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
    修飾子と型
    メソッド
    説明
    protected Object
    このオブジェクトのコピーを作成して、返します。
    boolean
    このオブジェクトと他のオブジェクトが等しいかどうかを示します。
    protected void
    削除予定のため非推奨: このAPI要素は、将来のバージョンで削除される可能性があります。
    最終決定は非推奨であり、将来のリリースで削除される可能性があります。
    final Class<?>
    このObjectの実行時クラスを返します。
    int
    このオブジェクトに対するハッシュ・コード値を返します。
    final void
    このオブジェクトのモニターで待機中のスレッドを1つ再開します。
    final void
    このオブジェクトのモニターで待機中のすべてのスレッドを再開します。
    final void
    現在のスレッドが目覚めるまで待機します。通常、notifiedまたはinterruptedです。
    final void
    wait(long timeoutMillis)
    現在のスレッドは、通常、notifiedまたはinterruptedであるか、一定のリアルタイムが経過するまで、目覚めるまで待機します。
    final void
    wait(long timeoutMillis, int nanos)
    現在のスレッドは、通常、notifiedまたはinterruptedであるか、一定のリアルタイムが経過するまで、目覚めるまで待機します。

    インタフェースで宣言されたメソッド RandomGenerator

    equiDoubles, isDeprecated, nextDouble, nextDouble, nextExponential, nextFloat, nextFloat, nextGaussian, nextInt, nextLong, nextLong
    修飾子と型
    メソッド
    説明
    default DoubleStream
    equiDoubles(double left, double right, boolean isLeftIncluded, boolean isRightIncluded)
    疑似ランダムに選択されたdouble値の事実上無制限のストリームを返します。各値は、指定されたleft境界と指定されたright境界の間にあります。
    default boolean
    RandomGenerator (algorithm)の実装が非推奨としてマークされている場合はtrueを返します。
    default double
    nextDouble(double bound)
    ゼロ(包含)と指定した境界(除外)の間の擬似乱数的に選択したdouble値を返します。
    default double
    nextDouble(double origin, double bound)
    指定された起点(包含)と指定された境界(除外)の間の擬似乱数的に選択したdouble値を返します。
    default double
    平均が1である指数分布から擬似乱数的に選択された、負でないdouble値を返します。
    default float
    nextFloat(float bound)
    ゼロ(包含)と指定したバインド(除外)の間の擬似乱数的に選択したfloat値を返します。
    default float
    nextFloat(float origin, float bound)
    指定された起点(包含)と指定された境界(除外)の間の擬似乱数的に選択したfloat値を返します。
    default double
    nextGaussian(double mean, double stddev)
    ガウス(正規)分布から擬似乱数的に選択されたdouble値を、引数で指定された平均偏差および標準偏差で返します。
    default int
    nextInt(int origin, int bound)
    指定された起点(包含)と指定された境界(除外)の間の擬似乱数的に選択したint値を返します。
    default long
    nextLong(long bound)
    ゼロ(包含)と指定した境界(除外)の間の擬似乱数的に選択したlong値を返します。
    default long
    nextLong(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 - seednullの場合
      外部仕様
    • 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.preferred Securityプロパティを使用して、指定したアルゴリズムの優先プロバイダ順序を決定します。 これは、Security.getProviders()によって返されるプロバイダの順序とは異なる場合があります。
      パラメータ:
      algorithm - RNGアルゴリズムの名前。 標準RNGアルゴリズム名の詳細は、「Javaセキュリティ標準アルゴリズム名仕様」SecureRandomの項を参照してください。
      戻り値:
      新しいSecureRandomオブジェクト
      スロー:
      NoSuchAlgorithmException - Providerが、指定されたアルゴリズムのSecureRandomSpi実装をサポートしていない場合
      NullPointerException - algorithmnullである場合
      導入されたバージョン:
      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 - algorithmnullである場合
      導入されたバージョン:
      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 - algorithmnullである場合
      導入されたバージョン:
      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 - algorithmnullである場合
      導入されたバージョン:
      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 - algorithmnullである場合
      導入されたバージョン:
      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 - algorithmnullである場合
      導入されたバージョン:
      9
      外部仕様
      関連項目:
    • getProvider

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

      public String getAlgorithm()
      このSecureRandomオブジェクトによって実装されたアルゴリズムの名前を返します。
      戻り値:
      アルゴリズムの名前。アルゴリズム名を特定できない場合はunknown
      導入されたバージョン:
      1.5
    • toString

      public String toString()
      このSecureRandomの人間が読める文字列表現を返します。
      オーバーライド:
      toString、クラスObject
      戻り値:
      文字列表現
    • getParameters

      public SecureRandomParameters getParameters()
      このSecureRandomインスタンスの有効なSecureRandomParametersを返します。

      戻り値は、getInstanceメソッドに渡されるSecureRandomParametersオブジェクトと異なる場合がありますが、このSecureRandomオブジェクトの存続期間中は変更できません。

      呼出し側は、戻り値を使用して、このSecureRandomがサポートする機能を確認できます。

      戻り値:
      有効なSecureRandomParametersパラメータ、またはパラメータが使用されていない場合はnull
      導入されたバージョン:
      9
      関連項目:
    • setSeed

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

      nextBytesまたはreseedコールの前にsetSeedがコールされた場合、PRNG SecureRandomは自動的にシードされません。 呼び出し側は、seed引数に、このSecureRandomのセキュリティのための十分なエントロピが含まれていることを確認する必要があります。

      パラメータ:
      seed - シード。
      スロー:
      NullPointerException - seednullの場合
      関連項目:
    • setSeed

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

      nextBytesまたはreseedコールの前にsetSeedがコールされた場合、PRNG SecureRandomは自動的にシードされません。 呼び出し側は、seed引数に、このSecureRandomのセキュリティのための十分なエントロピが含まれていることを確認する必要があります。

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

      オーバーライド:
      setSeed、クラスRandom
      パラメータ:
      seed - シード。
      関連項目:
    • nextBytes

      public void nextBytes(byte[] bytes)
      ユーザーが指定したバイト数の乱数バイト数を生成します。
      定義:
      インタフェースRandomGenerator内のnextBytes
      オーバーライド:
      nextBytes、クラスRandom
      パラメータ:
      bytes - 乱数バイトを充填する配列。
      スロー:
      NullPointerException - bytesnullの場合
    • nextBytes

      public void nextBytes(byte[] bytes, SecureRandomParameters params)
      追加パラメータを使用して、ユーザー指定のランダム・バイト数を生成します。
      パラメータ:
      bytes - 乱数バイトを充填する配列
      params - 追加パラメータ
      スロー:
      NullPointerException - bytesnullの場合
      UnsupportedOperationException - 基本のプロバイダ実装がこのメソッドをオーバーライドしていない場合
      IllegalArgumentException - paramsnullの場合、このSecureRandomによって不正またはサポートされていない
      導入されたバージョン:
      9
    • next

      protected final int next(int numBits)
      ユーザーが指定した数の擬似乱数ビット(右詰、ゼロ埋め込み)を含む整数を生成します。 このメソッドはjava.util.Randomメソッドをオーバーライドし、そのクラス(例: nextIntnextLongおよびnextFloat)から継承されたすべてのメソッドにランダム・ビットのソースを提供します。
      オーバーライド:
      next、クラスRandom
      パラメータ:
      numBits - 生成する擬似乱数ビットの数(0 <= numBits <= 32)。
      戻り値:
      ユーザー指定の擬似乱数ビット(右詰め、先頭にゼロ埋め込み)を含むint
    • 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 NoSuchAlgorithmException
      securerandom.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 - paramsnullの場合、このSecureRandomによって不正またはサポートされていない
      導入されたバージョン:
      9