Module java.base
Package java.security

Class AlgorithmParameterGenerator

java.lang.Object
java.security.AlgorithmParameterGenerator

public class AlgorithmParameterGenerator extends Object
AlgorithmParameterGenerator类用于生成一组参数,以便与某个算法一起使用。参数生成器是使用getInstance工厂方法构造的(返回给定类的实例的静态方法)。

将生成参数的对象可以以两种不同的方式初始化:以算法无关的方式或以算法特定的方式:

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

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

Java平台的每个实现都必须支持以下标准AlgorithmParameterGenerator算法和键大小(括号中):

  • DiffieHellman(1024, 2048)
  • DSA(1024, 2048)
这些算法在Java安全标准算法名称规范的AlgorithmParameterGenerator部分中有描述。请查阅您的实现的发布文档,以查看是否支持其他算法。
自版本:
1.2
参见:
  • Constructor Details

    • AlgorithmParameterGenerator

      protected AlgorithmParameterGenerator(AlgorithmParameterGeneratorSpi paramGenSpi, Provider provider, String algorithm)
      创建一个AlgorithmParameterGenerator对象。
      参数:
      paramGenSpi - 代理
      provider - 提供程序
      algorithm - 算法
  • Method Details

    • getAlgorithm

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

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

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

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

      实现注意:
      JDK参考实现另外使用jdk.security.provider.preferred Security属性来确定指定算法的首选提供程序顺序。这可能与由Security.getProviders()返回的提供程序顺序不同。
      参数:
      algorithm - 此参数生成器关联的算法的名称。有关标准算法名称的信息,请参阅Java安全标准算法名称规范中的AlgorithmParameterGenerator部分。
      返回:
      新的AlgorithmParameterGenerator对象
      抛出:
      NoSuchAlgorithmException - 如果没有Provider支持指定算法的AlgorithmParameterGeneratorSpi实现
      NullPointerException - 如果algorithmnull
      参见:
    • getInstance

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

      返回一个新的AlgorithmParameterGenerator对象,封装了来自指定提供程序的AlgorithmParameterGeneratorSpi实现。指定的提供程序必须在安全提供程序列表中注册。

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

      参数:
      algorithm - 此参数生成器关联的算法的名称。有关标准算法名称的信息,请参阅Java安全标准算法名称规范中的AlgorithmParameterGenerator部分。
      provider - Provider的字符串名称。
      返回:
      新的AlgorithmParameterGenerator对象
      抛出:
      IllegalArgumentException - 如果提供程序名称为null或为空
      NoSuchAlgorithmException - 如果指定提供程序中不可用指定算法的AlgorithmParameterGeneratorSpi实现
      NoSuchProviderException - 如果指定提供程序未在安全提供程序列表中注册
      NullPointerException - 如果algorithmnull
      参见:
    • getInstance

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

      返回一个新的AlgorithmParameterGenerator对象,封装了来自指定提供程序的AlgorithmParameterGeneratorSpi实现。请注意,指定的提供程序不必在提供程序列表中注册。

      参数:
      algorithm - 此参数生成器关联的算法的字符串名称。有关标准算法名称的信息,请参阅Java安全标准算法名称规范中的AlgorithmParameterGenerator部分。
      provider - Provider对象。
      返回:
      新的AlgorithmParameterGenerator对象
      抛出:
      IllegalArgumentException - 如果指定提供程序为null
      NoSuchAlgorithmException - 如果指定Provider对象中不可用指定算法的AlgorithmParameterGeneratorSpi实现
      NullPointerException - 如果algorithmnull
      自版本:
      1.4
      参见:
    • 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 - 如果给定的参数生成值不适用于此参数生成器。
    • init

      public final void init(AlgorithmParameterSpec genParamSpec, SecureRandom random) throws InvalidAlgorithmParameterException
      使用一组特定于算法的参数生成值初始化此参数生成器。
      参数:
      genParamSpec - 算法特定的参数生成值。
      random - 随机性来源。
      抛出:
      InvalidAlgorithmParameterException - 如果给定的参数生成值不适用于此参数生成器。
    • generateParameters

      public final AlgorithmParameters generateParameters()
      生成参数。
      返回:
      新的AlgorithmParameters对象。