- java.lang.Object
-
- java.security.SecureRandomSpi
-
- 实现的所有接口
-
Serializable
public abstract class SecureRandomSpi extends Object implements Serializable
此类定义SecureRandom
类的 ( SPI )。此类中的所有抽象方法必须由希望提供加密强伪随机数生成器的实现的每个服务提供者实现。
- 实现要求:
-
如果在实现中重写了
SecureRandomSpi(SecureRandomParameters)
构造函数,则只要实例化SecureRandom
,就会始终调用它。 确切地说,如果使用SecureRandom
的getInstance
方法之一实例化对象而没有SecureRandomParameters
参数,则将使用null
参数调用null
函数,并且实现负责创建自己的SecureRandomParameters
参数,以便在调用engineGetParameters()
时使用。 如果使用SecureRandom
的getInstance
方法之一使用SecureRandomParameters
参数实例化对象,则将使用该参数调用构造函数。engineGetParameters()
方法不得返回null
。否则,如果
SecureRandomSpi(SecureRandomParameters)
构造函数未在实现中被重写,则必须重写SecureRandomSpi()
构造函数,并且如果使用SecureRandom
的getInstance
方法之一实例化对象而没有SecureRandomParameters
参数,getInstance
调用该SecureRandomParameters
函数。 使用SecureRandomParameters
参数调用SecureRandom
的getInstance
方法SecureRandomParameters
将永远不会返回此实现的实例。engineGetParameters()
方法必须返回null
。有关线程安全性的其他详细信息,请参见
SecureRandom
。 默认情况下,SecureRandomSpi
实现被多个并发线程使用视为不安全,SecureRandom
将同步对每个适用引擎方法的访问(有关方法列表,请参阅SecureRandom
)。 但是,如果SecureRandomSpi
实现是线程安全的,则service provider attribute “ThreadSafe”在注册期间应设置为“true”,如下所示:put("SecureRandom.AlgName ThreadSafe", "true");
putService(new Service(this, "SecureRandom", "AlgName", className, null, Map.of("ThreadSafe", "true")));
SecureRandom
将调用适用的引擎方法而不进行任何同步。 - 从以下版本开始:
- 1.2
- 另请参见:
- Serialized Form
-
-
构造方法摘要
构造方法 变量 构造器 描述 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
的人类可读字符串表示SecureRandom
。
-
-
-
构造方法详细信息
-
SecureRandomSpi
public SecureRandomSpi()
没有参数的构造函数。
-
SecureRandomSpi
protected SecureRandomSpi(SecureRandomParameters params)
带参数的构造函数。- 参数
-
params
-SecureRandomParameters
对象。 这个论点可以是null
。 - 异常
-
IllegalArgumentException
- 如果params
无法识别或不支持SecureRandom
- 从以下版本开始:
- 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
- 如果params
是null
,非法或不支持SecureRandom
- 从以下版本开始:
- 9
-
engineGenerateSeed
protected abstract byte[] engineGenerateSeed(int numBytes)
返回给定的种子字节数。 该调用可用于播种其他随机数生成器。- 参数
-
numBytes
- 要生成的种子字节数。 - 结果
- 种子字节。
-
engineReseed
protected void engineReseed(SecureRandomParameters params)
- 实现要求:
-
默认实现抛出
UnsupportedOperationException
。 - 参数
-
params
- 额外参数,可以是null
。 - 异常
-
UnsupportedOperationException
- 如果实现未覆盖此方法 -
IllegalArgumentException
- 如果params
是非法或不受此SecureRandom
不支持 - 从以下版本开始:
- 9
-
engineGetParameters
protected SecureRandomParameters engineGetParameters()
返回此SecureRandom
实例的有效SecureRandomParameters
。- 实现要求:
-
默认实现返回
null
。 - 结果
-
有效的
SecureRandomParameters
参数,如果没有使用参数null
。 - 从以下版本开始:
- 9
-
-