模块  java.base
软件包  java.security

Class SecureRandomSpi

  • 实现的所有接口
    Serializable

    public abstract class SecureRandomSpiextends Objectimplements Serializable
    此类定义SecureRandom类的 ( SPI )。

    此类中的所有抽象方法必须由希望提供加密强伪随机数生成器的实现的每个服务提供者实现。

    实现要求:
    如果在实现中重写了SecureRandomSpi(SecureRandomParameters)构造函数,则只要实例化SecureRandom ,就会始终调用它。 确切地说,如果使用SecureRandomgetInstance方法之一实例化对象而没有 SecureRandomParameters参数,则将使用null参数调用null函数,并且实现负责创建自己的SecureRandomParameters参数,以便在调用engineGetParameters()时使用。 如果使用SecureRandomgetInstance方法之一使用 SecureRandomParameters参数实例化对象,则将使用该参数调用构造函数。 engineGetParameters()方法不得返回null

    否则,如果SecureRandomSpi(SecureRandomParameters)构造函数未在实现中被重写,则必须重写SecureRandomSpi()构造函数,并且如果使用SecureRandomgetInstance方法之一实例化对象而没有 SecureRandomParameters参数, getInstance调用该SecureRandomParameters函数。 使用 SecureRandomParameters参数调用SecureRandomgetInstance方法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

        public SecureRandomSpi()
        没有参数的构造函数。
    • 方法详细信息

      • 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 - 要生成的种子字节数。
        结果
        种子字节。
      • toString

        public String toString()
        返回此 SecureRandom的人类可读字符串表示 SecureRandom
        重写:
        toString在课程 Object
        结果
        字符串表示