public class KeyGenerator extends Object
密钥生成器使用此类的getInstance
类方法之一构建。
KeyGenerator对象是可重用的,即在生成一个密钥之后,可以重新使用相同的KeyGenerator对象来生成其他密钥。
有两种方式来生成一个密钥:以一种算法无关的方式,并以一种算法特定的方式。 两者之间的唯一区别是对象的初始化:
所有密钥生成器共享一个密钥长度的概念和随机源 。 这个KeyGenerator类中有一个init
方法,它接受这两个普遍共享的参数类型。 还有一个只需要一个keysize
参数,并且使用最高优先级安装的提供程序的SecureRandom实现作为随机源(或者如果没有一个已安装的提供程序提供SecureRandom实现,则是系统提供的随机源),以及一个只是一个随机的来源。
由于在调用上述独立于算法的init
方法时没有指定其他参数,因此提供者如何处理与每个密钥相关联的特定于算法的参数(如果有的话)。
对于一组特定于算法的参数已存在的情况,有两个init
方法具有AlgorithmParameterSpec
参数。 一个也有一个SecureRandom
参数,而另一个使用最高优先级安装的提供程序的SecureRandom实现作为随机源(或者系统提供的随机源,如果没有一个已安装的提供程序提供SecureRandom实现)。
如果客户端没有显式初始化KeyGenerator(通过调用init
方法),则每个提供程序都必须提供(并记录)默认的初始化。
Java平台的每个实现都需要支持以下标准KeyGenerator
算法,其中括号中的键入:
SecretKey
Modifier | Constructor and Description |
---|---|
protected |
KeyGenerator(KeyGeneratorSpi keyGenSpi, Provider provider, String algorithm)
创建一个KeyGenerator对象。
|
Modifier and Type | Method and Description |
---|---|
SecretKey |
generateKey()
生成一个秘密密钥。
|
String |
getAlgorithm()
返回此
KeyGenerator 对象的算法名称。
|
static KeyGenerator |
getInstance(String algorithm)
返回一个
KeyGenerator 对象,该对象为指定的算法生成密钥。
|
static KeyGenerator |
getInstance(String algorithm, Provider provider)
返回一个
KeyGenerator 对象,该对象为指定的算法生成密钥。
|
static KeyGenerator |
getInstance(String algorithm, String provider)
返回一个
KeyGenerator 对象,该对象为指定的算法生成密钥。
|
Provider |
getProvider()
返回此
KeyGenerator 对象的提供者。
|
void |
init(AlgorithmParameterSpec params)
使用指定的参数集初始化此密钥生成器。
|
void |
init(AlgorithmParameterSpec params, SecureRandom random)
使用指定的参数集和用户提供的随机源初始化此密钥生成器。
|
void |
init(int keysize)
初始化此密钥生成器用于某些密钥大小。
|
void |
init(int keysize, SecureRandom random)
使用用户提供的随机源,初始化该密钥生成器以进行某些密钥化。
|
void |
init(SecureRandom random)
初始化此密钥生成器。
|
protected KeyGenerator(KeyGeneratorSpi keyGenSpi, Provider provider, String algorithm)
keyGenSpi
- 代表
provider
- 提供商
algorithm
- 算法
public final String getAlgorithm()
KeyGenerator
对象的算法名称。
这是在创建此KeyGenerator
对象的getInstance
调用之一中指定的getInstance
。
KeyGenerator
对象的算法名称。
public static final KeyGenerator getInstance(String algorithm) throws NoSuchAlgorithmException
KeyGenerator
对象,该对象为指定的算法生成密钥。
此方法遍历已注册的安全提供程序列表,从最优选的提供程序开始。 返回从支持指定算法的第一个Provider中封装KeyGeneratorSpi实现的新KeyGenerator对象。
请注意,注册提供商的列表可以通过Security.getProviders()
方法检索 。
algorithm
- 请求密钥算法的标准名称。
看到的的KeyGenerator部分Java Cryptography Architecture Standard Algorithm Name Documentation有关标准算法名称的信息。
KeyGenerator
对象。
NullPointerException
- 如果指定的算法为空。
NoSuchAlgorithmException
- 如果没有提供者支持指定算法的KeyGeneratorSpi实现。
Provider
public static final KeyGenerator getInstance(String algorithm, String provider) throws NoSuchAlgorithmException, NoSuchProviderException
KeyGenerator
对象,该对象为指定的算法生成密钥。
返回从指定提供程序封装KeyGeneratorSpi实现的新KeyGenerator对象。 指定的提供者必须在安全提供程序列表中注册。
请注意,注册提供商的列表可以通过Security.getProviders()
方法检索 。
algorithm
- 请求密钥算法的标准名称。
看到的的KeyGenerator部分Java Cryptography Architecture Standard Algorithm Name Documentation有关标准算法名称的信息。
provider
- 提供者的名称。
KeyGenerator
对象。
NullPointerException
- 如果指定的算法为空。
NoSuchAlgorithmException
- 如果指定算法的KeyGeneratorSpi实现从指定的提供程序中不可用。
NoSuchProviderException
- 如果指定的提供程序未在安全提供程序列表中注册。
IllegalArgumentException
- 如果
provider
为空或为空。
Provider
public static final KeyGenerator getInstance(String algorithm, Provider provider) throws NoSuchAlgorithmException
KeyGenerator
对象,该对象为指定的算法生成密钥。
返回从指定的Provider对象封装KeyGeneratorSpi实现的新KeyGenerator对象。 请注意,指定的Provider对象不必在提供者列表中注册。
algorithm
- 所请求密钥算法的标准名称。
看到的的KeyGenerator部分Java Cryptography Architecture Standard Algorithm Name Documentation有关标准算法名称的信息。
provider
- 提供商。
KeyGenerator
对象。
NullPointerException
- 如果指定的算法为空。
NoSuchAlgorithmException
- 如果指定的算法的KeyGeneratorSpi实现从指定的Provider对象不可用。
IllegalArgumentException
- 如果
provider
为空。
Provider
public final Provider getProvider()
KeyGenerator
对象的提供者。
KeyGenerator
对象的提供者
public final void init(SecureRandom random)
random
- 该发生器的随机性来源
public final void init(AlgorithmParameterSpec params) throws InvalidAlgorithmParameterException
如果此密钥生成器需要随机字节,它会使用让他们SecureRandom
实现的最高优先级安装的提供作为随机源。 (如果没有一个已安装的提供商提供SecureRandom的实现,将会使用系统提供的随机源。)
params
- 密钥生成参数
InvalidAlgorithmParameterException
- 如果给定的参数不适合此密钥生成器
public final void init(AlgorithmParameterSpec params, SecureRandom random) throws InvalidAlgorithmParameterException
params
- 密钥生成参数
random
- 这个密钥生成器的随机源
InvalidAlgorithmParameterException
- 如果
params
不适合此密钥生成器
public final void init(int keysize)
如果此密钥生成器需要随机字节,它会使用让他们SecureRandom
实现的最高优先级安装的提供作为随机源。 (如果没有一个已安装的提供商提供SecureRandom的实现,将会使用系统提供的随机源。)
keysize
- keysize
。
这是一个以比特数表示的算法特定度量。
InvalidParameterException
- 如果keysize错误或不支持。
public final void init(int keysize, SecureRandom random)
keysize
- keysize
。
这是一个以比特数表示的算法特定度量。
random
- 这个密钥生成器的随机源
InvalidParameterException
- 如果
InvalidParameterException
错误或不支持。
public final SecretKey generateKey()