Module  java.base
软件包  java.security

Class AlgorithmParameterGenerator



  • public class AlgorithmParameterGenerator
    extends Object
    AlgorithmParameterGenerator类用于生成一组要用于某种算法的参数。 使用getInstance工厂方法(返回给定类的实例的静态方法)构造参数生成器。

    将生成参数的对象可以通过两种不同的方式进行初始化:以独立于算法的方式,或以特定于算法的方式进行初始化:

    • 与算法无关的方法使用所有参数生成器共享“大小”和随机源的概念。 所有算法参数都可以共享大小的尺寸,尽管对于不同的算法来说,其尺寸是不同的。 例如,在DSA算法的参数的情况下,“大小”对应于素数模量的大小(以比特为单位)。 当使用此方法时,特定于算法的参数生成值(如果有)默认为某些标准值,除非它们可以从指定的大小派生。
    • 另一种方法使用特定于算法的语义来初始化参数生成器对象,该语义由一组特定于算法的参数生成值表示。 为了生成Diffie-Hellman系统参数,例如,参数生成值通常由质数模数的大小和随机指数的大小组成,均以位数指定。

    如果客户端没有显式初始化AlgorithmParameterGenerator(通过调用init方法),则每个提供程序都必须提供(并记录)默认的初始化。 有关JDK提供程序使用的AlgorithmParameterGenerator默认值的信息,请参阅JDK Providers文档的Keysize Restriction部分。 不过,请注意,不同提供商的默认值可能会有所不同。 此外,提供者的默认值可能会在将来的版本中更改。 因此,建议明确地初始化AlgorithmParameterGenerator,而不是依赖于提供者特定的默认值。

    Java平台的每个实现都需要支持以下标准的AlgorithmParameterGenerator算法,并在括号中键入:

    • DiffieHellmanDiffieHellman
    • DSADSA
    这些算法在Java安全标准算法名称规范的AlgorithmParameterGenerator section中进行了描述。 请参阅发行说明文件以了解是否支持其他算法。
    从以下版本开始:
    1.2
    另请参见:
    AlgorithmParametersAlgorithmParameterSpec
    • 构造方法详细信息

      • AlgorithmParameterGenerator

        protected AlgorithmParameterGenerator​(AlgorithmParameterGeneratorSpi paramGenSpi,
                                              Provider provider,
                                              String algorithm)
        创建一个AlgorithmParameterGenerator对象。
        参数
        paramGenSpi - 代表
        provider - 提供商
        algorithm - 算法
    • 方法详细信息

      • getAlgorithm

        public final String getAlgorithm​()
        返回此参数生成器关联的算法的标准名称。
        结果
        算法的字符串名称。
      • getInstance

        public static AlgorithmParameterGenerator getInstance​(String algorithm)
                                                       throws NoSuchAlgorithmException
        返回一个AlgorithmParameterGenerator对象,用于生成与指定算法一起使用的一组参数。

        此方法遍历已注册的安全提供程序列表,从最优选的提供程序开始。 返回从支持指定算法的第一个Provider中封装AlgorithmParameterGeneratorSpi实现的新AlgorithmParameterGenerator对象。

        请注意,可以通过Security.getProviders()方法检索注册提供商的列表。

        Implementation Note:
        JDK参考实现还使用jdk.security.provider.preferred Security属性来确定指定算法的首选提供者顺序。 这可能与Security.getProviders()返回的提供商的顺序不同。
        参数
        algorithm - 此参数生成器关联的算法的名称。 有关标准算法名称的信息,请参阅Java Security Standard Algorithm Names Specification中的AlgorithmParameterGenerator部分。
        结果
        新的 AlgorithmParameterGenerator对象
        异常
        NoSuchAlgorithmException - 如果没有 Provider支持指定算法的 AlgorithmParameterGeneratorSpi实现
        NullPointerException - 如果 algorithmnull
        另请参见:
        Provider
      • getInstance

        public static AlgorithmParameterGenerator getInstance​(String algorithm,
                                                              Provider provider)
                                                       throws NoSuchAlgorithmException
        返回一个AlgorithmParameterGenerator对象,用于生成与指定算法一起使用的一组参数。

        返回从指定的Provider对象封装AlgorithmParameterGeneratorSpi实现的新AlgorithmParameterGenerator对象。 请注意,指定的Provider对象不必在提供者列表中注册。

        参数
        algorithm - 该参数生成器关联的算法的字符串名称。 有关标准算法名称的信息,请参阅Java Security Standard Algorithm Names Specification中的AlgorithmParameterGenerator部分。
        provider - Provider对象。
        结果
        新的 AlgorithmParameterGenerator对象
        异常
        IllegalArgumentException - 如果指定的提供者是 null
        NoSuchAlgorithmException - 如果指定的算法的 AlgorithmParameterGeneratorSpi实现从指定的 Provider对象不可用
        NullPointerException - 如果 algorithmnull
        从以下版本开始:
        1.4
        另请参见:
        Provider
      • getProvider

        public final Provider getProvider​()
        返回此算法参数生成器对象的提供者。
        结果
        该算法参数生成器对象的提供者
      • init

        public final void init​(int size)
        初始化此参数生成器达一定大小。 要创建参数,最高优先级的安装提供程序的SecureRandom实现被用作随机的来源。 (如果没有一个已安装的提供商提供SecureRandom的实现,则使用系统提供的随机源。)
        参数
        size - 大小(位数)。
      • init

        public final void init​(int size,
                               SecureRandom random)
        初始化此参数生成器以获得一定的大小和随机源。
        参数
        size - 大小(位数)。
        random - 随机的来源。
      • init

        public final void init​(AlgorithmParameterSpec genParamSpec)
                        throws InvalidAlgorithmParameterException
        使用一组特定于算法的参数生成值初始化此参数生成器。 要生成参数,最高优先级的安装提供程序的SecureRandom实现被用作随机的来源。 (如果没有一个已安装的提供商提供了一个SecureRandom的实现,则使用系统提供的随机源。)
        参数
        genParamSpec - 算法特定参数生成值的集合。
        异常
        InvalidAlgorithmParameterException - 如果给定的参数生成值不适合此参数生成器。
      • generateParameters

        public final AlgorithmParameters generateParameters​()
        生成参数。
        结果
        the new AlgorithmParameters object.