public abstract class KeyPairGenerator extends KeyPairGeneratorSpi
getInstance
工厂方法(返回给定类的实例的静态方法)构造。
用于特定算法的密钥对生成器创建可以与该算法一起使用的公钥/私钥对。 它还将算法特定的参数与生成的每个密钥相关联。
生成密钥对的方法有两种:以算法无关的方式,并以算法特定的方式。 两者之间的唯一区别是对象的初始化:
所有密钥对生成器共享密钥大小和随机源的概念。 对于不同的算法来说,keyize被不同地解释(例如,在DSA算法的情况下,keysize对应于模数的长度)。 此KeyPairGenerator类中有一个initialize
方法,它接受这两个普遍共享的参数类型。 还有一个只带有keysize
参数,并使用SecureRandom
实现的最高优先级安装的提供作为随机源。 (如果没有一个已安装的提供商提供SecureRandom的SecureRandom
,则使用系统提供的随机源。)
由于在调用上述与算法无关的initialize
方法时没有指定其他参数,因此提供者如何处理与每个密钥相关联的特定于算法的参数(如果有的话)。
如果算法是DSA算法和密钥大小(模数的大小)为512,768,或1024,那么Sun提供使用为一组预先计算的值的p
, q
和g
参数。 如果模数大小不是上述值之一, Sun提供商将创建一组新的参数。 其他提供商可能预先计算的参数集超过上述三个模数大小。 还有一些可能没有预先计算的参数的列表,而不是总是创建新的参数集。
对于已经存在一组特定于算法的参数(例如,DSA中所谓的社区参数 )的情况,有两种initialize
方法具有AlgorithmParameterSpec
参数。 其中也有一个SecureRandom
的说法,而其他使用SecureRandom
实现的最高优先级安装的提供作为随机源。 (如果没有一个安装的提供商提供SecureRandom的SecureRandom
,则使用系统提供的随机源。)
如果客户端没有显式初始化KeyPairGenerator(通过调用initialize
方法),则每个提供程序都必须提供(并记录)默认的初始化。 例如, Sun提供商使用1024位的默认模数大小(keysize)。
注意,这个类是抽象的,由于历史原因而从KeyPairGeneratorSpi
延伸。 应用程序开发人员只应注意本KeyPairGenerator
课程中定义的方法; 超类中的所有方法都适用于希望提供自己的密钥对生成器实现的加密服务提供商。
Java平台的每个实现都需要支持以下标准KeyPairGenerator
算法,并在括号中键入:
DiffieHellman
(1024) DSA
(1024) RSA
( RSA
) AlgorithmParameterSpec
Modifier | Constructor and Description |
---|---|
protected |
KeyPairGenerator(String algorithm)
为指定的算法创建一个KeyPairGenerator对象。
|
Modifier and Type | Method and Description |
---|---|
KeyPair |
generateKeyPair()
生成一个密钥对。
|
KeyPair |
genKeyPair()
生成一个密钥对。
|
String |
getAlgorithm()
返回该密钥对生成器的算法的标准名称。
|
static KeyPairGenerator |
getInstance(String algorithm)
返回一个KeyPairGenerator对象,该对象为指定的算法生成公钥/私钥对。
|
static KeyPairGenerator |
getInstance(String algorithm, Provider provider)
返回一个KeyPairGenerator对象,该对象为指定的算法生成公钥/私钥对。
|
static KeyPairGenerator |
getInstance(String algorithm, String provider)
返回一个KeyPairGenerator对象,该对象为指定的算法生成公钥/私钥对。
|
Provider |
getProvider()
返回此密钥对生成器对象的提供者。
|
void |
initialize(AlgorithmParameterSpec params)
使用指定的参数集和最高优先级安装的提供程序的
SecureRandom 实现来初始化密钥对生成器作为随机源。
|
void |
initialize(AlgorithmParameterSpec params, SecureRandom random)
使用给定的参数集和随机源初始化密钥对生成器。
|
void |
initialize(int keysize)
初始化使用默认的参数设置和确定密钥大小的密钥对生成
SecureRandom 实现的最高优先级安装的提供作为随机源。
|
void |
initialize(int keysize, SecureRandom random)
使用给定的随机源(和默认参数集)初始化特定密钥大小的密钥对生成器。
|
protected KeyPairGenerator(String algorithm)
algorithm
- algorithm
的标准字符串名称。
看到了KeyPairGenerator的部分Java Cryptography Architecture Standard Algorithm Name Documentation有关标准算法名称的信息。
public String getAlgorithm()
public static KeyPairGenerator getInstance(String algorithm) throws NoSuchAlgorithmException
此方法遍历已注册的安全提供程序列表,从最优选的提供程序开始。 返回从支持指定算法的第一个Provider中封装KeyPairGeneratorSpi实现的新KeyPairGenerator对象。
请注意,注册提供商的列表可以通过Security.getProviders()
方法检索 。
algorithm
- algorithm
的标准字符串名称。
看到了KeyPairGenerator的部分Java Cryptography Architecture Standard Algorithm Name Documentation有关标准算法名称的信息。
NoSuchAlgorithmException
- 如果没有提供者支持指定算法的KeyPairGeneratorSpi实现。
Provider
public static KeyPairGenerator getInstance(String algorithm, String provider) throws NoSuchAlgorithmException, NoSuchProviderException
返回从指定提供程序封装KeyPairGeneratorSpi实现的新KeyPairGenerator对象。 指定的提供者必须在安全提供程序列表中注册。
请注意,可以通过Security.getProviders()
方法检索已注册提供商的列表。
algorithm
- algorithm
的标准字符串名称。
看到了KeyPairGenerator的部分Java Cryptography Architecture Standard Algorithm Name Documentation有关标准算法名称的信息。
provider
- 提供者的字符串名称。
NoSuchAlgorithmException
- 如果指定算法的KeyPairGeneratorSpi实现不可用于指定的提供程序。
NoSuchProviderException
- 如果指定的提供程序未在安全提供程序列表中注册。
IllegalArgumentException
- 如果提供者名称为空或为空。
Provider
public static KeyPairGenerator getInstance(String algorithm, Provider provider) throws NoSuchAlgorithmException
返回从指定的Provider对象封装KeyPairGeneratorSpi实现的新KeyPairGenerator对象。 请注意,指定的Provider对象不必在提供者列表中注册。
algorithm
- algorithm
的标准字符串名称。
看到了KeyPairGenerator的部分Java Cryptography Architecture Standard Algorithm Name Documentation有关标准算法名称的信息。
provider
- 提供商。
NoSuchAlgorithmException
- 如果指定的算法的KeyPairGeneratorSpi实现从指定的Provider对象不可用。
IllegalArgumentException
- 如果指定的提供者为空。
Provider
public final Provider getProvider()
public void initialize(int keysize)
SecureRandom
实现的最高优先级安装的提供作为随机源。
(如果没有一个安装的提供商提供SecureRandom的SecureRandom
,则使用系统提供的随机源。)
keysize
- keysize
。
这是一种算法特定的度量,例如以位数指定的模数长度。
InvalidParameterException
-如果
keysize
不受此KeyPairGenerator对象支持。
public void initialize(int keysize, SecureRandom random)
initialize
在类别
KeyPairGeneratorSpi
keysize
- keysize
。
这是一种算法特定的度量,例如以位数指定的模数长度。
random
-
random
的来源。
InvalidParameterException
-如果
keysize
不受此KeyPairGenerator对象支持。
public void initialize(AlgorithmParameterSpec params) throws InvalidAlgorithmParameterException
SecureRandom
实现来初始化密钥对生成器作为随机源。
(如果没有一个已安装的提供程序提供了一个SecureRandom的SecureRandom
,则使用系统提供的随机源。
这个具体的方法已经添加到这个以前定义的抽象类中。 该方法调用KeyPairGeneratorSpi initialize
方法,传递它params
和params
源(从最高优先级安装的提供程序或系统获得,如果没有一个已安装的提供程序提供一个)。 initialize
方法总是抛出UnsupportedOperationException,如果它不被提供程序覆盖。
params
- 用于生成密钥的参数集。
InvalidAlgorithmParameterException
- 如果给定的参数不适合此密钥对生成器。
public void initialize(AlgorithmParameterSpec params, SecureRandom random) throws InvalidAlgorithmParameterException
这个具体的方法已经添加到这个以前定义的抽象类中。 此方法调用KeyPairGeneratorSpi initialize
方法,传递它params
和random
。 initialize
方法总是抛出UnsupportedOperationException,如果它不被提供程序覆盖。
initialize
在类别
KeyPairGeneratorSpi
params
- 用于生成密钥的参数集。
random
-
random
的来源。
InvalidAlgorithmParameterException
- 如果给定的参数不适合该密钥对生成器。
public final KeyPair genKeyPair()
如果此KeyPairGenerator尚未被显式初始化,则提供者特定的默认值将用于生成的密钥的大小和其他(算法特定)值。
这将在每次调用时生成一个新的密钥对。
此方法在功能上等同于generateKeyPair
。
public KeyPair generateKeyPair()
如果此KeyPairGenerator尚未被显式初始化,则提供者特定的默认值将用于生成的密钥的大小和其他(算法特定)值。
这将在每次调用时生成一个新的密钥对。
此方法在功能上等效于genKeyPair
。
generateKeyPair
在类别
KeyPairGeneratorSpi