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

クラスSecureRandomSpi

  • すべての実装されたインタフェース:
    Serializable

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

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

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

    それ以外の場合、SecureRandomSpi(SecureRandomParameters)コンストラクタが実装でオーバーライドされていない場合、SecureRandomSpi()コンストラクタをオーバーライドする必要があります。オブジェクトがSecureRandom getInstanceメソッドwithoutSecureRandomParameters引数のいずれかを使用してインスタンス化された場合に呼び出されます。 SecureRandom getInstanceのメソッドwithSecureRandomParametersのいずれかを呼び出すと、この実装のインスタンスは返されません。 engineGetParameters()メソッドはnullを返す必要があります。

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

     put("SecureRandom.AlgName ThreadSafe", "true");
    or
     putService(new Service(this, "SecureRandom", "AlgName", className,
              null, Map.of("ThreadSafe", "true")));
    SecureRandomは、同期を行わずに該当するエンジン・メソッドを呼び出します。

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

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

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

      • 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
        戻り値:
        文字列表現