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
ModifierConstructorDescriptionprotected
AlgorithmParameterGenerator
(AlgorithmParameterGeneratorSpi paramGenSpi, Provider provider, String algorithm) 创建一个AlgorithmParameterGenerator
对象。 -
Method Summary
Modifier and TypeMethodDescriptionfinal AlgorithmParameters
生成参数。final String
返回此参数生成器关联的算法的标准名称。static AlgorithmParameterGenerator
getInstance
(String algorithm) 返回一个AlgorithmParameterGenerator
对象,用于生成一组要与指定算法一起使用的参数。static AlgorithmParameterGenerator
getInstance
(String algorithm, String provider) 返回一个AlgorithmParameterGenerator
对象,用于生成一组要与指定算法一起使用的参数。static AlgorithmParameterGenerator
getInstance
(String algorithm, Provider provider) 返回一个AlgorithmParameterGenerator
对象,用于生成一组要与指定算法一起使用的参数。final Provider
返回此算法参数生成器对象的提供程序。final void
init
(int size) 为特定大小初始化此参数生成器。final void
init
(int size, SecureRandom random) 为特定大小和随机源初始化此参数生成器。final void
init
(AlgorithmParameterSpec genParamSpec) 使用一组算法特定的参数生成值初始化此参数生成器。final void
init
(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.preferred
Security
属性来确定指定算法的首选提供程序顺序。这可能与由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
对象。
-