java.lang.Object | +----java.security.KeyPairGenerator
KeyPairGenerator 用于生成公有密钥和私有密钥对。用
getInstance 工厂方法 ( 静态方法,返回给定类的实例 ) 构造密钥生成器。
密钥生成有时不适合于算法独立性。例如,可以指定密钥系列参数 ( p、q 和 g) 生成一个 DSA 密钥对,但是不能这样生成一个 RSA 密钥对。即,那些参数适用于 DSA 但不适用于 RSA。
所以有两种生成一个密钥对的方式:独立于算法的方式和算法特有的方式。两种方式的区别只是对象的初始化不同。
所有的密钥对生成器都有“长度”的概念和一个随机数源。长度的量度是被所有的算法共享的,尽管不同的算法对它的解释不同。 KeyPairGenerator 类的 initialize 方法采用这两种共享的参数类型。
因为调用独立于算法的 initialize 方法时不需要其它的参数,其它的值,如算法参数、公有指数等缺省的设置为标准值。
有时需要用算法特定的语义初始化一个密钥对生成器对象。例如,可能希望用给定的参数集合 p、q 和
g 初始化一个 DSA 密钥生成器,或者用给定的共有指数初始化一个 RSA 密钥生成器。
这通过算法特定的标准接口完成。不是调用独立于算法的 KeyPairGenerator
initialize 方法,而是将密钥生成器变形为一个算法特定的接口,调用它的一个指定参数的初始化方法。例如,DSAKeyPairGenerator 接口 ( 在
java.security.interfaces 中 )。
protected KeyPairGenerator(String algorithm)
public String getAlgorithm()
public static KeyPairGenerator getInstance(String algorithm) throws NoSuchAlgorithmException
public static KeyPairGenerator getInstance(String algorithm,
String provider) throws NoSuchAlgorithmException, NoSuchProviderException
public abstract void initialize(int strength,
SecureRandom random)
public void initialize(int strength)
public abstract KeyPair generateKeyPair()