モジュール java.base
パッケージ 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は、非決定論的な出力を生成する必要があります。 したがって、SecureRandomオブジェクトに渡されるシード材料はすべて予測不可能でなければならず、すべてのSecureRandom出力シーケンスは、RFC 4086: セキュリティのランダム性要件で説明されているように、暗号的に強くなければなりません。

多くのSecureRandom実装は、疑似乱数ジェネレータ(PRNGは、確定的ランダム・ビット発生器またはDRBGとしても知られている)の形をとります。つまり、ランダム・シードから疑似ランダム・シーケンスを生成するために決定論的アルゴリズムを使用します。 実装の中には、真の乱数を生成するものもあれば、両方の技術の組み合わせを使用するものもあります。

呼び出し元は、引数のないコンストラクタまたはgetInstanceメソッドの1つを使用して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パラメータを受け入れることができます。

ノート: 実装によっては、エントロピ・ソースがさまざまなUnixライクなオペレーティング・システム上で/dev/randomである場合など、generateSeedreseedおよびnextBytesメソッドは、エントロピが収集されるにつれてブロックされる可能性があります。

スレッドの安全性

SecureRandomオブジェクトは、複数の同時スレッドで安全に使用できます。
実装要件:
SecureRandomサービス・プロバイダは、プロバイダを登録するときに「サービス・プロバイダ属性」 "ThreadSafe"を"true"に設定することによって、スレッド・セーフであることを通知できます。 それ以外の場合、このクラスは代わりにSecureRandomSpi実装の次のメソッドへのアクセスを同期します:
導入されたバージョン:
1.1
関連項目:
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, String provider)
    指定された乱数ジェネレータ(RNG)アルゴリズムを実装するSecureRandomオブジェクトを返します。
    static SecureRandom getInstance​(String algorithm, Provider provider)
    指定された乱数ジェネレータ(RNG)アルゴリズムを実装するSecureRandomオブジェクトを返します。
    static SecureRandom getInstance​(String algorithm, SecureRandomParameters params)
    指定された乱数ジェネレータ(RNG)アルゴリズムを実装し、指定されたSecureRandomParametersリクエストをサポートするSecureRandomオブジェクトを返します。
    static SecureRandom getInstance​(String algorithm, SecureRandomParameters params, String provider)
    指定された乱数ジェネレータ(RNG)アルゴリズムを実装し、指定されたSecureRandomParametersリクエストをサポートするSecureRandomオブジェクトを返します。
    static SecureRandom getInstance​(String algorithm, SecureRandomParameters params, Provider provider)
    指定された乱数ジェネレータ(RNG)アルゴリズムを実装し、指定されたSecureRandomParametersリクエストをサポートするSecureRandomオブジェクトを返します。
    static SecureRandom getInstanceStrong()
    securerandom.strongAlgorithmsSecurityプロパティで指定されたアルゴリズムまたはプロバイダを使用して選択されたSecureRandomオブジェクトを返します。
    SecureRandomParameters getParameters()
    このSecureRandomインスタンスの実効SecureRandomParametersを返します。
    Provider getProvider()
    このSecureRandomオブジェクトのプロバイダを返します。
    static byte[] getSeed​(int numBytes)
    指定されたバイト数のシード・バイトを返します。シード・バイトの計算には、このクラスが自身をシードするのに使用するシード生成アルゴリズムが使用されます。
    protected int next​(int numBits)
    ユーザーが指定した数の擬似乱数ビット(右詰、ゼロ埋め込み)を含む整数を生成します。
    void nextBytes​(byte[] bytes)
    ユーザーが指定したバイト数の乱数バイト数を生成します。
    void nextBytes​(byte[] bytes, SecureRandomParameters params)
    追加のパラメータを使用して、ユーザーが指定した数のランダムなバイトを生成します。
    void reseed()
    エントロピ入力からエントロピ入力を読み取ってこのSecureRandomを再計算します。
    void reseed​(SecureRandomParameters params)
    このSecureRandomをエントロピ入力から追加パラメータで読み取って再計算します。
    void setSeed​(byte[] seed)
    このランダム・オブジェクトを指定されたシードで再割り当てします。
    void setSeed​(long seed)
    指定されたlong seedに含まれている8バイトを使用して、この乱数オブジェクトを再シードします。
    String toString()
    このSecureRandomの人間が読める文字列表現を返します。

    クラス java.lang.Objectで宣言されたメソッド

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
  • コンストラクタの詳細

    • SecureRandom

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

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

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

      標準のRNGアルゴリズム名については、「Javaセキュリティ標準アルゴリズム名指定」SecureRandomセクションを参照してください。

    • SecureRandom

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

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

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

      標準のRNGアルゴリズム名については、「Javaセキュリティ標準アルゴリズム名指定」SecureRandomセクションを参照してください。

      パラメータ:
      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()メソッド経由で取得できます。

      実装上のノート:
      JDKリファレンス実装では、jdk.security.provider.preferred Securityプロパティを使用して、指定されたアルゴリズムの優先プロバイダの順序を決定します。 これは、Security.getProviders()によって返されるプロバイダの順序とは異なる場合があります。
      パラメータ:
      algorithm - RNGアルゴリズムの名前。 標準のRNGアルゴリズム名については、「Javaセキュリティ標準アルゴリズム名指定」SecureRandomセクションを参照してください。
      戻り値:
      新しいSecureRandomオブジェクト
      例外:
      NoSuchAlgorithmException - Providerが、指定されたアルゴリズムのSecureRandomSpi実装をサポートしていない場合
      NullPointerException - algorithmnullである場合
      導入されたバージョン:
      1.2
      関連項目:
      Provider
    • 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
      関連項目:
      Provider
    • getInstance

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

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

      パラメータ:
      algorithm - RNGアルゴリズムの名前。 標準のRNGアルゴリズム名については、「Javaセキュリティ標準アルゴリズム名指定」SecureRandomセクションを参照してください。
      provider - プロバイダ
      戻り値:
      新しいSecureRandomオブジェクト
      例外:
      IllegalArgumentException - 指定されたプロバイダがnullの場合
      NoSuchAlgorithmException - 指定されたアルゴリズムのSecureRandomSpi実装が、指定されたProviderオブジェクトから使用できない場合
      NullPointerException - algorithmnullである場合
      導入されたバージョン:
      1.4
      関連項目:
      Provider
    • getInstance

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

      このメソッドは、最優先のProviderから順に、登録済みのセキュリティProviderのリストをトラバースします。 指定されたアルゴリズムと指定された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
      関連項目:
      Provider
    • 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または空の場合、またはparamsがnullの場合
      NoSuchAlgorithmException - 指定されたプロバイダが、指定されたアルゴリズムおよびパラメータのSecureRandomSpi実装をサポートしていない場合
      NoSuchProviderException - 指定されたプロバイダがセキュリティ・プロバイダ・リストに登録されていない場合
      NullPointerException - algorithmnullである場合
      導入されたバージョン:
      9
      関連項目:
      Provider
    • getInstance

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

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

      パラメータ:
      algorithm - RNGアルゴリズムの名前。 標準のRNGアルゴリズム名については、「Javaセキュリティ標準アルゴリズム名指定」SecureRandomセクションを参照してください。
      params - 新しく作成されたSecureRandomオブジェクトがサポートする必要があるSecureRandomParameters
      provider - プロバイダ
      戻り値:
      新しいSecureRandomオブジェクト
      例外:
      IllegalArgumentException - 指定されたプロバイダまたはパラメータがnullの場合
      NoSuchAlgorithmException - 指定されたプロバイダが、指定されたアルゴリズムおよびパラメータのSecureRandomSpi実装をサポートしていない場合
      NullPointerException - algorithmnullである場合
      導入されたバージョン:
      9
      関連項目:
      Provider
    • 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
      関連項目:
      SecureRandomSpi
    • setSeed

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

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

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

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

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

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

      public void nextBytes​(byte[] bytes)
      ユーザーが指定したバイト数の乱数バイト数を生成します。
      オーバーライド:
      nextBytes、クラス: Random
      パラメータ:
      bytes - 乱数バイトを充填する配列。
    • nextBytes

      public void nextBytes​(byte[] bytes, SecureRandomParameters params)
      追加のパラメータを使用して、ユーザーが指定した数のランダムなバイトを生成します。
      パラメータ:
      bytes - 乱数バイトを充填する配列
      params - 追加パラメータ
      例外:
      NullPointerException - bytesがnullの場合
      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)
      指定されたバイト数のシード・バイトを返します。シード・バイトの計算には、このクラスが自身をシードするのに使用するシード生成アルゴリズムが使用されます。 この呼出しを使うと、ほかの乱数ジェネレータをシードできます。

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

      パラメータ:
      numBytes - 生成するシード・バイト数。
      戻り値:
      シード・バイト。
      例外:
      IllegalArgumentException - numBytesが負の場合
      関連項目:
      setSeed(byte[])
    • 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
      関連項目:
      Security.getProperty(String)
    • reseed

      public void reseed()
      エントロピ入力からエントロピ入力を読み取ってこのSecureRandomを再計算します。
      例外:
      UnsupportedOperationException - 基本となるプロバイダ実装がこのメソッドをオーバーライドしていない場合。
      導入されたバージョン:
      9
    • reseed

      public void reseed​(SecureRandomParameters params)
      このSecureRandomをエントロピ入力から追加パラメータで読み取って再計算します。

      エントロピはエントロピ源から得られることに留意されたい。 paramsの一部のデータにはエントロピが含まれることがありますが、主な用途は多様性を提供することです。

      パラメータ:
      params - 余分なパラメータ
      例外:
      UnsupportedOperationException - 基本となるプロバイダ実装がこのメソッドをオーバーライドしていない場合。
      IllegalArgumentException - paramsnullの場合、このSecureRandomによって不正またはサポートされていない
      導入されたバージョン:
      9