AlgorithmParameterGenerator类用于生成一组参数,以便与某个算法一起使用。参数生成器是使用getInstance工厂方法构造的(返回给定类的实例的静态方法)。
将生成参数的对象可以以两种不同的方式初始化:以算法无关的方式或以算法特定的方式:
- 算法无关方法利用所有参数生成器共享“大小”和随机源的概念。大小的度量在所有算法参数中是普遍共享的,尽管对于不同的算法,它的解释是不同的。例如,在DSA算法的参数情况下,“大小”对应于素数模数的大小(以位为单位)。当使用此方法时,如果有的话,算法特定的参数生成值默认为一些标准值,除非它们可以从指定的大小派生。
- 另一种方法使用算法特定的语义初始化参数生成器对象,这些语义由一组算法特定的参数生成值表示。例如,为了生成Diffie-Hellman系统参数,参数生成值通常包括素数模数的大小和随机指数的大小,两者都以位数指定。
如果客户端没有显式初始化AlgorithmParameterGenerator(通过调用init方法),则每个提供程序必须提供(并记录)默认初始化。有关JDK提供程序使用的AlgorithmParameterGenerator默认值的信息,请参阅JDK提供程序文档中的Keysize Restriction部分。但是,请注意,不同提供程序的默认值可能有所不同。此外,提供程序的默认值可能会在将来的版本中更改。因此,建议显式初始化AlgorithmParameterGenerator,而不是依赖于特定于提供程序的默认值。
Java平台的每个实现都必须支持以下标准AlgorithmParameterGenerator算法和键大小(括号中):
DiffieHellman(1024, 2048)DSA(1024, 2048)
- 自版本:
- 1.2
- 参见:
-
Constructor Summary
ConstructorsModifierConstructorDescriptionprotectedAlgorithmParameterGenerator(AlgorithmParameterGeneratorSpi paramGenSpi, Provider provider, String algorithm) 创建一个AlgorithmParameterGenerator对象。 -
Method Summary
Modifier and TypeMethodDescriptionfinal AlgorithmParameters生成参数。final String返回此参数生成器关联的算法的标准名称。static AlgorithmParameterGeneratorgetInstance(String algorithm) 返回一个AlgorithmParameterGenerator对象,用于生成一组要与指定算法一起使用的参数。static AlgorithmParameterGeneratorgetInstance(String algorithm, String provider) 返回一个AlgorithmParameterGenerator对象,用于生成一组要与指定算法一起使用的参数。static AlgorithmParameterGeneratorgetInstance(String algorithm, Provider provider) 返回一个AlgorithmParameterGenerator对象,用于生成一组要与指定算法一起使用的参数。final Provider返回此算法参数生成器对象的提供程序。final voidinit(int size) 为特定大小初始化此参数生成器。final voidinit(int size, SecureRandom random) 为特定大小和随机源初始化此参数生成器。final voidinit(AlgorithmParameterSpec genParamSpec) 使用一组算法特定的参数生成值初始化此参数生成器。final voidinit(AlgorithmParameterSpec genParamSpec, SecureRandom random) 使用一组算法特定的参数生成值初始化此参数生成器。
-
Constructor Details
-
AlgorithmParameterGenerator
protected AlgorithmParameterGenerator(AlgorithmParameterGeneratorSpi paramGenSpi, Provider provider, String algorithm) 创建一个AlgorithmParameterGenerator对象。- 参数:
-
paramGenSpi- 代理 -
provider- 提供程序 -
algorithm- 算法
-
-
Method Details
-
getAlgorithm
返回此参数生成器关联的算法的标准名称。- 返回:
- 算法的字符串名称。
-
getInstance
public static AlgorithmParameterGenerator getInstance(String algorithm) throws NoSuchAlgorithmException 返回一个AlgorithmParameterGenerator对象,用于生成一组要与指定算法一起使用的参数。此方法遍历已注册的安全提供程序列表,从最首选的提供程序开始。返回一个新的
AlgorithmParameterGenerator对象,封装了支持指定算法的第一个提供程序的AlgorithmParameterGeneratorSpi实现。请注意,已注册提供程序列表可以通过
Security.getProviders()方法检索。- 实现注意:
-
JDK参考实现另外使用
jdk.security.provider.preferredSecurity属性来确定指定算法的首选提供程序顺序。这可能与由Security.getProviders()返回的提供程序顺序不同。 - 参数:
-
algorithm- 此参数生成器关联的算法的名称。有关标准算法名称的信息,请参阅Java安全标准算法名称规范中的AlgorithmParameterGenerator部分。 - 返回:
-
新的
AlgorithmParameterGenerator对象 - 抛出:
-
NoSuchAlgorithmException- 如果没有Provider支持指定算法的AlgorithmParameterGeneratorSpi实现 -
NullPointerException- 如果algorithm为null - 参见:
-
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- 如果algorithm为null - 参见:
-
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- 如果algorithm为null - 自版本:
- 1.4
- 参见:
-
getProvider
返回此算法参数生成器对象的提供程序。- 返回:
- 此算法参数生成器对象的提供程序
-
init
public final void init(int size) 初始化此参数生成器以特定大小。为了创建参数,将使用安装的提供程序中优先级最高的SecureRandom实现作为随机性的来源。(如果没有安装的提供程序提供SecureRandom的实现,则将使用系统提供的随机性来源。)- 参数:
-
size- 大小(位数)。
-
init
为特定大小和随机性来源初始化此参数生成器。- 参数:
-
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
生成参数。- 返回:
-
新的
AlgorithmParameters对象。
-