zh_cn |
KeyPairGenerator 类用于生成公钥和私钥对。密钥对生成器是使用 getInstance
工厂方法(返回一个给定类的实例的静态方法)构造的。
特定算法的密钥对生成器可以创建能够与此算法一起使用的公钥/私钥对。它还可以将特定于算法的参数与每个生成的密钥关联。
有两种生成密钥对的方式:与算法无关的方式和特定于算法的方式。两种方式的唯一区别在于对象的初始化:
- 与算法无关的初始化
所有的密钥对生成器遵循密钥大小和随机源的概念。对于不同的算法,密钥大小的解释也不相同(例如,对于 DSA 算法,密钥大小对应于模的长度)。此 KeyPairGenerator 类有一个
initialize
方法,该方法带有两个通用的共享类型的参数。还有一个只带有keysize
参数的方法,它使用以最高优先级安装的提供者的SecureRandom
实现作为随机源。(如果任何安装的提供者都不提供SecureRandom
的实现,则使用系统提供的随机源。)因为调用上述与算法无关的
initialize
方法时没有指定其他参数,所以由提供者决定如何处理与每个密钥关联的特定于算法的参数(如果有)。如果算法为 DSA 算法,密钥大小(模大小)为 512、768 或 1024,那么 Sun 提供者对
p
、q
和g
参数使用一组预计算值。如果模大小不是上述值之一,则 Sun 提供者创建一个新的参数集合。其他提供者可能具有供更多模大小(不仅仅是上文提及的那三个)使用的预计算参数集合。其他提供者也可能没有任何预计算参数列表,而总是创建新的参数集合。 - 特定于算法的初始化
对于特定于算法的参数集合已存在的情况(例如,DSA 中所谓的公用参数),有两个
initialize
方法具有AlgorithmParameterSpec
参数。其中一个方法还有一个SecureRandom
参数,而另一个方法使用以最高优先级安装的提供者的SecureRandom
实现作为随机源。(如果任何安装的提供者都不提供SecureRandom
的实现,则使用系统提供的随机源。)
每个提供者都必须提供(并记录)默认的初始化,以防客户端没有显式初始化 KeyPairGenerator(通过调用 initialize
方法)。例如,Sun 提供者使用 1024 位的默认模大小(密钥大小)。
注意,由于历史原因,此类是抽象类,是从 KeyPairGeneratorSpi
扩展的。应用程序开发人员只需注意在此 KeyPairGenerator
类中定义的方法;超类中的所有方法是供加密服务提供者使用的,这些加密服务提供者希望提供自己的密钥对生成器实现。
version | 1.59, 04/21/06 |
See also | java.security.spec.AlgorithmParameterSpec |
Constructors | |||||
---|---|---|---|---|---|
protected | KeyPairGenerator(String algorithm)
|
Methods | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
public KeyPair | generateKeyPair()
如果此 KeyPairGenerator 没有被显式初始化,特定于提供者的默认值将用于所生成密钥的大小和其他(特定于算法的)值。 每次调用此方法都将生成新的密钥对。 此方法在功能上等同于
|
||||||||||||
final public KeyPair | genKeyPair()
如果此 KeyPairGenerator 没有被显式初始化,特定于提供者的默认值将用于所生成密钥的大小和其他(特定于算法的)值。 每次调用此方法都将生成新的密钥对。 此方法在功能上等同于
|
||||||||||||
public void | initialize(int keysize)
SecureRandom 实现作为随机源。(如果任何安装的提供者都不提供 SecureRandom 的实现,则使用系统提供的随机源。)
|
||||||||||||
public void | initialize(int keysize, SecureRandom random)
|
||||||||||||
public void | initialize(AlgorithmParameterSpec params) throws InvalidAlgorithmParameterException
SecureRandom 的实现作为随机源。(如果任何安装的提供者都不提供 SecureRandom 的实现,则使用系统提供的随机源。) 已将此具体方法添加到以前定义的这个抽象类中。此方法调用 KeyPairGeneratorSpi 的
|
||||||||||||
public void | initialize(AlgorithmParameterSpec params, SecureRandom random) throws InvalidAlgorithmParameterException
已将此具体方法添加到以前定义的这个抽象类中。此方法调用 KeyPairGeneratorSpi 的
|
Properties | ||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
public String | getAlgorithm()
|
|||||||||||||||||||||
public static KeyPairGenerator | getInstance(String algorithm) throws NoSuchAlgorithmException
此方法从首选 Provider 开始遍历已注册安全提供者列表。返回封装 KeyPairGeneratorSpi 实现的新 KeyPairGenerator 对象,该实现取自第一个支持指定算法的 Provider。 注意,可以通过
|
|||||||||||||||||||||
public static KeyPairGenerator | getInstance(String algorithm, String provider) throws NoSuchAlgorithmException, NoSuchProviderException
返回一个封装 KeyPairGeneratorSpi 实现的新 KeyPairGenerator 对象,该实现取自指定提供者。指定提供者必须在安全提供者列表中注册。 注意,可以通过
|
|||||||||||||||||||||
public static KeyPairGenerator | getInstance(String algorithm, Provider provider) throws NoSuchAlgorithmException
返回一个封装 KeyPairGeneratorSpi 实现的新 KeyPairGenerator 对象,该实现取自指定 Provider 对象。注意,指定 Provider 对象无需在提供者列表中注册。
|
|||||||||||||||||||||
final public Provider | getProvider()
|