java.applet

java.awt

java.awt.color

java.awt.datatransfer

java.awt.dnd

java.awt.event

java.awt.font

java.awt.geom

java.awt.im

java.awt.im.spi

java.awt.image

java.awt.image.renderable

java.awt.print

java.beans

java.beans.beancontext

java.io

java.lang

java.lang.annotation

java.lang.instrument

java.lang.management

java.lang.ref

java.lang.reflect

java.math

java.net

java.nio

java.nio.channels

java.nio.channels.spi

java.nio.charset

java.nio.charset.spi

java.rmi

java.rmi.activation

java.rmi.dgc

java.rmi.registry

java.rmi.server

java.security

java.security.acl

java.security.cert

java.security.interfaces

java.security.spec

java.sql

java.text

java.util

java.util.concurrent

java.util.concurrent.atomic

java.util.concurrent.locks

java.util.jar

java.util.logging

java.util.prefs

java.util.regex

java.util.zip

javax.accessibility

javax.activity

javax.crypto

javax.crypto.interfaces

javax.crypto.spec

javax.imageio

javax.imageio.event

javax.imageio.metadata

javax.imageio.plugins.bmp

javax.imageio.plugins.jpeg

javax.imageio.spi

javax.imageio.stream

javax.management

javax.management.loading

javax.management.modelmbean

javax.management.monitor

javax.management.openmbean

javax.management.relation

javax.management.remote

javax.management.remote.rmi

javax.management.timer

javax.naming

javax.naming.directory

javax.naming.event

javax.naming.ldap

javax.naming.spi

javax.net

javax.net.ssl

javax.print

javax.print.attribute

javax.print.attribute.standard

javax.print.event

javax.rmi

javax.rmi.CORBA

javax.rmi.ssl

javax.security.auth

javax.security.auth.callback

javax.security.auth.kerberos

javax.security.auth.login

javax.security.auth.spi

javax.security.auth.x500

javax.security.cert

javax.security.sasl

javax.sound.midi

javax.sound.midi.spi

javax.sound.sampled

javax.sound.sampled.spi

javax.sql

javax.sql.rowset

javax.sql.rowset.serial

javax.sql.rowset.spi

javax.swing

javax.swing.border

javax.swing.colorchooser

javax.swing.event

javax.swing.filechooser

javax.swing.plaf

javax.swing.plaf.basic

javax.swing.plaf.metal

javax.swing.plaf.multi

javax.swing.plaf.synth

javax.swing.table

javax.swing.text

javax.swing.text

javax.swing.text.parser

javax.swing.text.rtf

javax.swing.tree

javax.swing.undo

javax.transaction

javax.transaction.xa

javax.xml

javax.xml.datatype

javax.xml.namespace

javax.xml.parsers

javax.xml.transform

javax.xml.transform.dom

javax.xml.transform.sax

javax.xml.transform.stream

javax.xml.validation

javax.xml.xpath

org.ietf.jgss

org.omg.CORBA

org.omg.CORBA_2_3

org.omg.CORBA_2_3.portable

org.omg.CORBA.DynAnyPackage

org.omg.CORBA.ORBPackage

org.omg.CORBA.portable

org.omg.CORBA.TypeCodePackage

org.omg.CosNaming

org.omg.CosNaming.NamingContextExtPackage

org.omg.CosNaming.NamingContextPackage

org.omg.Dynamic

org.omg.DynamicAny

org.omg.DynamicAny.DynAnyFactoryPackage

org.omg.DynamicAny.DynAnyPackage

org.omg.IOP

org.omg.IOP.CodecFactoryPackage

org.omg.IOP.CodecPackage

org.omg.Messaging

org.omg.PortableInterceptor

org.omg.PortableInterceptor.ORBInitInfoPackage

org.omg.PortableServer

org.omg.PortableServer.CurrentPackage

org.omg.PortableServer.POAManagerPackage

org.omg.PortableServer.POAPackage

org.omg.PortableServer.portable

org.omg.PortableServer.ServantLocatorPackage

org.omg.SendingContext

org.omg.stub.java.rmi

org.w3c.dom

org.w3c.dom.bootstrap

org.w3c.dom.events

org.w3c.dom.ls

org.xml.sax

org.xml.sax.ext

org.xml.sax.helpers

allclasses-frame

allclasses-noframe

constant-values

deprecated-list

help-doc

JavaTM 2 Platform
Standard Ed. 5.0

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

initialize

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

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

参数:
params - 用于生成密钥的参数集合。
抛出:
InvalidAlgorithmParameterException - 如果给定的参数不适合此密钥对生成器。
从以下版本开始:
1.2

initialize

public void initialize(AlgorithmParameterSpec params,
                       SecureRandom random)
                throws InvalidAlgorithmParameterException
使用给定参数集合和随机源初始化密钥对生成器。

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

覆盖:
KeyPairGeneratorSpi 中的 initialize
参数:
params - 用于生成密钥的参数集合。
random - 随机源。
抛出:
InvalidAlgorithmParameterException - 如果给定的参数不适合此密钥对生成器。
从以下版本开始:
1.2

genKeyPair

public final KeyPair genKeyPair()
生成密钥对。

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

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

此方法在功能上等同于 generateKeyPair

返回:
生成的密钥对
从以下版本开始:
1.2

generateKeyPair

public KeyPair generateKeyPair()
生成一个密钥对。

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

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

此方法在功能上等同于 generateKeyPair

指定者:
KeyPairGeneratorSpi 中的 generateKeyPair
返回:
生成的密钥对

JavaTM 2 Platform
Standard Ed. 5.0

提交错误或意见
有关更多的 API 参考资料和开发人员文档,请参阅 Java 2 SDK SE 开发人员文档。该文档包含更详细的、面向开发人员的描述,以及总体概述、术语定义、使用技巧和工作代码示例。

版权所有 2004 Sun Microsystems, Inc. 保留所有权利。 请遵守许可证条款。另请参阅文档重新分发政策