java.security KeyPairGenerator

摘要:
KeyPairGenerator类用于生成公钥和私钥对。此KeyPairGenerator类有一个带有两个公共共享类型参数的初始化方法。注意,由于历史原因,这个类是抽象的,从KeyPairGeneratorSpi扩展而来。版本1.59,04/21/06另请参见java.security.spec.AlgorithParameterSpecConstructorsprotectedKeyPairGeneratorzh_Cn为指定算法创建KeyPairGenerator对象。此方法在功能上等同于generateKeyPair。ThrowsInvalidParameterException:zh_Cn如果此KeyPairGenerator对象不支持密钥大小。since1.2publicvoidinitializthrowsInvalidAlgorithmParameterExceptionzh_Cn初始化密钥对生成器,使用指定的参数集,并使用安装了最高优先级的提供程序SecureRandom的实现作为随机源。此方法调用KeyPairGeneratorSpi的初始化方法,将参数和随机数传递给它。

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

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

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

  • 与算法无关的初始化

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

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

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

  • 特定于算法的初始化

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

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

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

version1.59, 04/21/06
See alsojava.security.spec.AlgorithmParameterSpec
 
Constructors
protectedKeyPairGenerator(String algorithm)
zh_cn
为指定的算法创建 KeyPairGenerator 对象。
algorithm
zh_cn
算法的标准字符串名称。有关标准算法名称的信息,请参阅 Java Cryptography Architecture API Specification & Reference 中的附录 A。
 
Methods
public KeyPairgenerateKeyPair()
zh_cn
生成一个密钥对。

如果此 KeyPairGenerator 没有被显式初始化,特定于提供者的默认值将用于所生成密钥的大小和其他(特定于算法的)值。

每次调用此方法都将生成新的密钥对。

此方法在功能上等同于 generateKeyPair

return
zh_cn
生成的密钥对
 
final public KeyPairgenKeyPair()
zh_cn
生成密钥对。

如果此 KeyPairGenerator 没有被显式初始化,特定于提供者的默认值将用于所生成密钥的大小和其他(特定于算法的)值。

每次调用此方法都将生成新的密钥对。

此方法在功能上等同于 generateKeyPair

return
zh_cn
生成的密钥对
since1.2
 
public voidinitialize(int keysize)
zh_cn
初始化确定密钥大小的密钥对生成器,使用默认的参数集合,并使用以最高优先级安装的提供者的 SecureRandom 实现作为随机源。(如果任何安装的提供者都不提供 SecureRandom 的实现,则使用系统提供的随机源。)
keysize
zh_cn
密钥大小。它是特定于算法的度量(如模长度),以位数为单位指定。
ThrowsInvalidParameterException
zh_cn
如果 keysize不受此 KeyPairGenerator 对象支持。
 
public voidinitialize(int keysize, SecureRandom random)
zh_cn
使用给定的随机源(和默认的参数集合)初始化确定密钥大小的密钥对生成器。
keysize
zh_cn
密钥大小。它是特定于算法的度量(如模长度),以位数为单位指定。
random
zh_cn
随机源。
ThrowsInvalidParameterException
zh_cn
如果 keysize不受此 KeyPairGenerator 对象支持。
since1.2
 
public voidinitialize(AlgorithmParameterSpec params) throws InvalidAlgorithmParameterException
zh_cn
初始化密钥对生成器,使用指定参数集合,并使用以最高优先级安装的提供者的 SecureRandom 的实现作为随机源。(如果任何安装的提供者都不提供 SecureRandom 的实现,则使用系统提供的随机源。)

已将此具体方法添加到以前定义的这个抽象类中。此方法调用 KeyPairGeneratorSpi 的 initialize 方法,为它传递 params 和随机源(从以最高优先级安装的提供者获得;如果任何已安装的提供者都不能提供,则由系统提供)。如果没有被提供者重写,则该 initialize 方法总是抛出 UnsupportedOperationException。

params
zh_cn
用于生成密钥的参数集合。
ThrowsInvalidAlgorithmParameterException
zh_cn
如果给定的参数不适合此密钥对生成器。
since1.2
 
public voidinitialize(AlgorithmParameterSpec params, SecureRandom random) throws InvalidAlgorithmParameterException
zh_cn
使用给定参数集合和随机源初始化密钥对生成器。

已将此具体方法添加到以前定义的这个抽象类中。此方法调用 KeyPairGeneratorSpi 的 initialize 方法,为它传递 params 和 random。如果没有被提供者重写,则该 initialize 方法总是抛出 UnsupportedOperationException。

params
zh_cn
用于生成密钥的参数集合。
random
zh_cn
随机源。
ThrowsInvalidAlgorithmParameterException
zh_cn
如果给定的参数不适合此密钥对生成器。
since1.2
 

Properties
public StringgetAlgorithm()
zh_cn
返回此密钥对生成器算法的标准名称。有关标准算法名称的信息,请参阅 Java Cryptography Architecture API Specification & Reference 中的附录 A。
return
zh_cn
算法的标准字符串名称。
 
public static KeyPairGeneratorgetInstance(String algorithm) throws NoSuchAlgorithmException
zh_cn
返回生成指定算法的 public/private 密钥对的 KeyPairGenerator 对象。

此方法从首选 Provider 开始遍历已注册安全提供者列表。返回封装 KeyPairGeneratorSpi 实现的新 KeyPairGenerator 对象,该实现取自第一个支持指定算法的 Provider。

注意,可以通过 Security.getProviders() 方法获取已注册提供者列表。

algorithm
zh_cn
算法的标准字符串名称。有关标准算法名称的信息,请参阅 Java Cryptography Architecture API Specification & Reference 中的附录 A。
return
zh_cn
新的 KeyPairGenerator 对象。
ThrowsNoSuchAlgorithmException
zh_cn
如果没有 Provider 支持指定算法的 KeyPairGeneratorSpi 实现。
See alsojava.security.Provider
 
public static KeyPairGeneratorgetInstance(String algorithm, String provider) throws NoSuchAlgorithmExceptionNoSuchProviderException
zh_cn
返回生成指定算法的 public/private 密钥对的 KeyPairGenerator 对象。

返回一个封装 KeyPairGeneratorSpi 实现的新 KeyPairGenerator 对象,该实现取自指定提供者。指定提供者必须在安全提供者列表中注册。

注意,可以通过 Security.getProviders() 方法获取已注册提供者列表。

algorithm
zh_cn
算法的标准字符串名称。有关标准算法名称的信息,请参阅 Java Cryptography Architecture API Specification & Reference 中的附录 A。
provider
zh_cn
提供者的字符串名称。
return
zh_cn
新的 KeyPairGenerator 对象。
ThrowsNoSuchAlgorithmException
zh_cn
如果指定算法的 KeyPairGeneratorSpi 实现不能从指定提供者获得。
ThrowsNoSuchProviderException
zh_cn
如果指定提供者未在安全提供者列表中注册。
ThrowsIllegalArgumentException
zh_cn
如果提供者的名称为 null 或空。
See alsojava.security.Provider
 
public static KeyPairGeneratorgetInstance(String algorithm, Provider provider) throws NoSuchAlgorithmException
zh_cn
返回生成指定算法的 public/private 密钥对的 KeyPairGenerator 对象。

返回一个封装 KeyPairGeneratorSpi 实现的新 KeyPairGenerator 对象,该实现取自指定 Provider 对象。注意,指定 Provider 对象无需在提供者列表中注册。

algorithm
zh_cn
算法的标准字符串名称。有关标准算法名称的信息,请参阅 Java Cryptography Architecture API Specification & Reference 中的附录 A。
provider
zh_cn
提供者。
return
zh_cn
新的 KeyPairGenerator 对象。
ThrowsNoSuchAlgorithmException
zh_cn
如果指定算法的 KeyPairGeneratorSpi 实现不能从指定提供者对象获得。
ThrowsIllegalArgumentException
zh_cn
如果指定提供者为 null。
since1.4
See alsojava.security.Provider
 
final public ProvidergetProvider()
zh_cn
返回此密钥对生成器对象的提供者。
return
zh_cn
返回此密钥对生成器对象的提供者

免责声明:文章转载自《java.security KeyPairGenerator》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇互联网电商高并发解决方案(一)boost test学习(一)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

【转】RO段、RW段和ZI段 Image$$??$$Limit 含义(zz)

作者评注:内容很多,不过解释讲解详细 http://www.cnblogs.com/heart-of-eagle/archive/2011/04/28/2032240.html 转载:          IMPORT |Image$$RO$$Limit|      IMPORT |Image$$RW$$Base|      IMPORT |Image$$Z...

jvm之java类加载机制和类加载器(ClassLoader),方法区结构,堆中实例对象结构的详解

一.类加载或类初始化:当程序主动使用某个类时,如果该类还未被加载到内存中,则JVM会通过加载、连接、初始化3个步骤来对该类进行初始化。如果没有意外,JVM将会连续完成3个步骤。 二.类加载时机: 1.创建类的实例,也就是new一个对象 2.访问某个类或接口的静态变量,或者对该静态变量赋值 3.调用类的静态方法 4.反射(Class.forName("com...

C99规范

1. 增加restrict指针    C99中增加了公适用于指针的restrict类型修饰符,它是初始访问指针所指对象的惟一途径,因此只有借助restrict指针表达式才能访问对象。restrict指针指针主要用做函数变元,或者指向由malloc()函数所分配的内存变量。restrict数据类型不改变程序的语义。    如果某个函数定义了两个restr...

Hadoop实战之二~ hadoop作业调度详解(1)

对Hadoop的最感兴趣的地方,也就在于Hadoop的作业调度了,在正式介绍如何搭建Hadoop之前,深入理解一下Hadoop的作业调度很有必要。我们不一定能用得上Hadoop,但是如果理通顺Hadoop的分布式调度原理,在有需要的时候未必不能自己写一个Mini Hadoop~: ) 开始 本文转载自:http://www.cnblogs.com/ship...

在VMware上制作一个简单的Linux

大体思路 boot root initrd.gzgrubvmlinuz-2.6.18-308.el5 bin sbin lib etc proc sys dev boot 有以上内容我们就可以运行一个非常简单的Linux,只需要往里面添加各种配置文件,就可以启动我们所需要的各种服务。在制作之前,我们先做一些准备工作。 1、在VMware上添...

SpringXML方式配置bean的懒加载lazy-init

lazy-init(懒加载),表示该bean在容器初始化的时候不进行初始化。 例如: <bean name="role1" class="com.fz.entity.Role" lazy-init="true"> 以上配置表示:spring容器在初始化的时候不会初始化role1这个bean,当配置上lazy-init=true之后,表示该bea...