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()
 Submit a bug or feature 
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
 Copyright © 1993, 2014, Oracle and/or its affiliates. All rights reserved.