モジュール 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");
or
 putService(new Service(this, "SecureRandom", "AlgName", className,
          null, Map.of("ThreadSafe", "true")));
SecureRandomは、同期なしで適用可能なエンジン・メソッドを呼び出します。

導入されたバージョン:
1.2
関連項目: