所有类


java.security
类 KeyPairGenerator

java.lang.Object
  继承者 java.security.KeyPairGeneratorSpi
      继承者 java.security.KeyPairGenerator

public abstract class KeyPairGenerator
   
   
   
   
   
extends KeyPairGeneratorSpi

KeyPairGenerator 类用于生成公钥和私钥对。密钥对生成器是使用 getInstance 工厂方法(返回一个给定类的实例的静态方法)构造的。

特定算法的密钥对生成器创建可与此算法一起使用的公钥/私钥对。也将每个生成的密钥与特定于算法的参数相关联。

有两种方法生成一个密钥对:与算法无关的方式和特定于算法的方式。两种方式的惟一区别在于对象的初始化:

  • 与算法无关的初始化

    所有的密钥对生成器遵循密钥大小和随机源的概念。对于不同的算法密钥大小的解释不同(例如,对于 DSA 算法,密钥大小对应于模的长度)。此 KeyPairGenerator 类有一个 initialize 方法,该方法带有这两个通用的共享类型的参数。也有一个只带有 keysize 参数的方法,它使用提供程序(以最高优先级安装)的 SecureRandom 实现作为随机源。(如果任何安装的 provider 都不提供 SecureRandom 的实现,则使用系统提供的随机源。)

    因为调用上述与算法无关的 initialize 方法时没有指定其他参数,所以由提供程序决定如何处理与每个密钥相关联的特定于算法的参数(如果有)。

    如果算法为 DSA 算法,密钥大小(模大小)为 512、768、或 1024,那么 Sun 提供程序为 pqg 参数使用预计算值。如果模大小不是上述值之一,则 Sun 提供程序创建一个新的参数集合。其他提供程序可能具有供更多模大小(不仅仅是上文提及的那三个)使用的预计算参数集合。其他提供程序也可能根本没有预计算参数列表,而总是创建新的参数集合。

  • 特定于算法的初始化

    对于特定于算法的参数集合已存在的情况(例如,DSA 中所谓的公用参数),有两个 initialize 方法具有 AlgorithmParameterSpec 参数。其中一个方法还有一个 SecureRandom 参数,而另一个方法使用提供程序(以最高优先级安装)的 SecureRandom 实现作为随机源。(如果任何安装的 provider 都不提供 SecureRandom 的实现,则使用系统提供的随机源。)

每个 提供程序都必须提供(并记录)默认的初始化,以防客户没有显式初始化 KeyPairGenerator(通过调用 initialize 方法)。例如,Sun 提供程序使用 1024 位的默认模大小(密钥大小)。

注意,由于历史原因,此类是抽象的,是从 KeyPairGeneratorSpi 扩展的。应用程序开发人员只应该注意在此 KeyPairGenerator 类中定义的方法;超类中的所有方法是供加密服务提供者使用的,这些加密服务提供者希望提供自己的密钥对生成器实现。

另请参见:
AlgorithmParameterSpec

构造方法摘要
protected KeyPairGenerator(String algorithm)
          针对指定的算法创建 KeyPairGenerator 对象。
 
方法摘要
 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)
          使用给定的随机源(和默认的参数集合)初始化确定密钥长度的密钥对生成器。
 
从类 java.lang.Object 继承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

构造方法详细信息

KeyPairGenerator

protected KeyPairGenerator(String algorithm)
针对指定的算法创建 KeyPairGenerator 对象。

参数:
algorithm - 算法的标准字符串名称。有关标准算法名称的信息,请参阅《Java Cryptography Architecture API Specification & Reference》中的附录 A。
方法详细信息

getAlgorithm

public String getAlgorithm()
返回此密钥对生成器算法的标准名称。有关标准算法名称的信息,请参阅《Java Cryptography Architecture API Specification & Reference》中的附录 A。

返回:
算法的标准字符串名称。

getInstance

public static KeyPairGenerator getInstance(String algorithm)
                                    throws NoSuchAlgorithmException
生成实现指定摘要算法的 KeyPairGenerator 对象。如果默认的提供程序包提供所请求的摘要算法的实现,则返回包含该实现的 KeyPairGenerator 的实例。如果默认包中不存在该算法,则搜索其他包。

参数:
algorithm - 算法的标准字符串名称。有关标准算法名称的信息,请参阅《Java Cryptography Architecture API Specification & Reference》中的附录 A。
返回:
新的 KeyPairGenerator 对象。
抛出:
NoSuchAlgorithmException - 如果算法在环境中不可用。

getInstance

public static KeyPairGenerator getInstance(String algorithm,
                                           String provider)
                                    throws NoSuchAlgorithmException,
                                           NoSuchProviderException
如果可从指定的提供程序得到算法,则生成实现了该指定算法的 KeyPairGenerator 对象。

参数:
algorithm - 算法的标准字符串名称。有关标准算法名称的信息,请参阅《Java Cryptography Architecture API Specification & Reference》中的附录 A。
provider - 提供程序的字符串名称。
返回:
新的 KeyPairGenerator 对象。
抛出:
NoSuchAlgorithmException - 如果不能从提供程序得到算法。
NoSuchProviderException - 如果提供程序在环境中不可用。
IllegalArgumentException - 如果提供程序的名称为 null 或空。
另请参见:
Provider

getInstance

public static KeyPairGenerator getInstance(String algorithm,
                                           Provider provider)
                                    throws NoSuchAlgorithmException
如果该可从指定的提供程序得到算法,则生成实现了该指定算法的 KeyPairGenerator 对象。注:provider 不一定都需要注册。

参数:
algorithm - 算法的标准字符串名称。有关标准算法名称的信息,请参阅《Java Cryptography Architecture API Specification & Reference》中的附录 A。
provider - 提供程序。
返回:
新的 KeyPairGenerator 对象。
抛出:
NoSuchAlgorithmException - 如果不能从提供程序得到算法。
IllegalArgumentException - 如果 provider 为 null。
从以下版本开始:
1.4
另请参见:
Provider

getProvider

public final Provider getProvider()
返回此密钥对生成器的提供程序。

返回:
返回此密钥对生成器的提供程序

initialize

public void initialize(int keysize)
初始化确定密钥大小的密钥对生成器,使用默认的参数集合并使用提供程序(以最高优先级安装)的 SecureRandom 实现作为随机源。(如果任何安装的提供程序都不提供 SecureRandom 的实现,则使用系统提供的随机源。)

参数:
keysize - 密钥大小。这是特定于算法的度量(如模长度),以位数的形式指定。
抛出:
InvalidParameterException - 如果 keysize 不受此 KeyPairGenerator 支持

initialize

public void initialize(int keysize,
                       SecureRandom random)
使用给定的随机源(和默认的参数集合)初始化确定密钥长度的密钥对生成器。

指定者:
KeyPairGeneratorSpi 中的 initialize
参数:
keysize - 密钥大小。这是特定于算法的度量(如模长度),以位数的形式指定。
random - 随机源。
抛出:
InvalidParameterException - 如果 keysize 不受此 KeyPairGenerator 支持
从以下版本开始:
1.2

微信小程序

微信扫一扫体验

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部