モジュール java.base
パッケージ java.security

クラスSecureRandomSpi

java.lang.Object
java.security.SecureRandomSpi
すべての実装されたインタフェース:
Serializable

public abstract class SecureRandomSpi extends Object implements Serializable
このクラスは、SecureRandomクラスの「サービス・プロバイダ・インタフェース」 (SPI)を定義します。

このクラス内のすべての抽象メソッドは、暗号用に強化した擬似乱数ジェネレータの実装を供給しようとする各サービス・プロバイダによって実装される必要があります。

実装要件:
実装でSecureRandomSpi(SecureRandomParameters)コンストラクタがオーバーライドされると、SecureRandomがインスタンス化されるたびに常にコールされます。 正確には、オブジェクトがSecureRandomgetInstanceメソッドwithoutのいずれかでSecureRandomParametersパラメータを使用してインスタンス化される場合、コンストラクタはnull引数を使用してコールされ、実装はengineGetParameters()がコールされるときに使用する独自のSecureRandomParametersパラメータを作成します。 オブジェクトがSecureRandomgetInstanceメソッドwithのいずれかでSecureRandomParameters引数を使用してインスタンス化されると、その引数を使用してコンストラクタがコールされます。 engineGetParameters()メソッドはnullを返してはなりません。

それ以外の場合は、実装でSecureRandomSpi(SecureRandomParameters)コンストラクタがオーバーライドされない場合、SecureRandomSpi()コンストラクタはオーバーライドする必要があり、オブジェクトがSecureRandomgetInstanceメソッドwithoutのいずれかでSecureRandomParameters引数でインスタンス化されるとコールされます。 SecureRandomgetInstanceメソッドの1つをコールすると、SecureRandomParameters引数でこの実装のインスタンスを返しません。 engineGetParameters()メソッドはnullを返す必要があります。

スレッドの安全性の詳細は、SecureRandomを参照してください。 デフォルトでは、SecureRandomSpi実装は複数の同時スレッドで使用しても安全ではないとみなされ、SecureRandomは適用可能な各エンジン・メソッド(メソッドのリストについては、SecureRandomを参照してください。)へのアクセスを同期します。 ただし、SecureRandomSpi実装がスレッド・セーフである場合、登録時に「サービス・プロバイダ属性」 "ThreadSafe"を次のように"true"に設定する必要があります:

 put("SecureRandom.AlgName ThreadSafe", "true");
または
 putService(new Service(this, "SecureRandom", "AlgName", className,
          null, Map.of("ThreadSafe", "true")));
SecureRandomは、同期なしで適用可能なエンジン・メソッドを呼び出します。

導入されたバージョン:
1.2
関連項目:
  • コンストラクタのサマリー

    コンストラクタ
    修飾子
    コンストラクタ
    説明
     
    パラメータのないコンストラクタです。
    protected
    パラメータを持つコンストラクタです。
  • メソッドのサマリー

    修飾子と型
    メソッド
    説明
    protected abstract byte[]
    engineGenerateSeed(int numBytes)
    指定されたバイト数のシード・バイト数を返します。
    このSecureRandomインスタンスの有効なSecureRandomParametersを返します。
    protected abstract void
    engineNextBytes(byte[] bytes)
    ユーザーが指定したバイト数の乱数バイト数を生成します。
    protected void
    engineNextBytes(byte[] bytes, SecureRandomParameters params)
    追加パラメータを使用して、ユーザー指定のランダム・バイト数を生成します。
    protected void
    エントロピ・ソースから読み取られたエントロピ入力で、このランダム・オブジェクトを追加パラメータで再シードします。
    protected abstract void
    engineSetSeed(byte[] seed)
    このランダムなオブジェクトを、指定されたシードに再シードします。
    このSecureRandomの人間が読める文字列表現を返します。

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

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

    • SecureRandomSpi

      public SecureRandomSpi()
      パラメータのないコンストラクタです。
    • SecureRandomSpi

      protected SecureRandomSpi(SecureRandomParameters params)
      パラメータを持つコンストラクタです。
      パラメータ:
      params - SecureRandomParametersオブジェクト。 この引数にはnullを指定できます。
      例外:
      IllegalArgumentException - このSecureRandomによってparamsが認識できないか、またはサポートされていない場合
      導入されたバージョン:
      9
  • メソッドの詳細

    • engineSetSeed

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

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

      一部の乱数ジェネレータでは、呼出しごとに限られた量のランダム・バイトしか生成できません。 bytesのサイズがこの制限より大きい場合、実装では、このメソッドから戻す前に、その生成プロセスを複数回起動してバッファを完全に埋める必要があります。

      パラメータ:
      bytes - 乱数バイトを充填する配列。
    • engineNextBytes

      protected void engineNextBytes(byte[] bytes, SecureRandomParameters params)
      追加パラメータを使用して、ユーザー指定のランダム・バイト数を生成します。

      一部の乱数ジェネレータでは、呼出しごとに限られた量のランダム・バイトしか生成できません。 bytesのサイズがこの制限より大きい場合、実装では、このメソッドから戻す前に、その生成プロセスを複数回起動してバッファを完全に埋める必要があります。

      実装要件:
      デフォルトの実装では、UnsupportedOperationExceptionがスローされます。
      パラメータ:
      bytes - 乱数バイトを充填する配列
      params - 追加パラメータ
      例外:
      UnsupportedOperationException - 実装がこのメソッドをオーバーライドしていない場合
      IllegalArgumentException - paramsnullの場合、このSecureRandomによって不正またはサポートされていない
      導入されたバージョン:
      9
    • engineGenerateSeed

      protected abstract byte[] engineGenerateSeed(int numBytes)
      指定されたバイト数のシード・バイト数を返します。 この呼出しを使うと、ほかの乱数ジェネレータをシードできます。
      パラメータ:
      numBytes - 生成するシード・バイト数。
      戻り値:
      シード・バイト。
    • engineReseed

      protected void engineReseed(SecureRandomParameters params)
      エントロピ・ソースから読み取られたエントロピ入力で、このランダム・オブジェクトを追加パラメータで再シードします。

      このメソッドがSecureRandom.reseed()によって呼び出された場合、paramsnullになります。

      実装がリ・シードをサポートしていない場合は、このメソッドをオーバーライドしないでください。

      実装要件:
      デフォルトの実装では、UnsupportedOperationExceptionがスローされます。
      パラメータ:
      params - 追加パラメータには、nullを指定できます。
      例外:
      UnsupportedOperationException - 実装がこのメソッドをオーバーライドしていない場合
      IllegalArgumentException - このSecureRandomによってparamsが不正またはサポートされていない場合
      導入されたバージョン:
      9
    • engineGetParameters

      protected SecureRandomParameters engineGetParameters()
      このSecureRandomインスタンスの有効なSecureRandomParametersを返します。
      実装要件:
      デフォルトの実装ではnullを返します。
      戻り値:
      有効なSecureRandomParametersパラメータ、またはパラメータが使用されていない場合はnull
      導入されたバージョン:
      9
    • toString

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