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

javax.crypto
类 KeyGenerator

java.lang.Object
  继承者 javax.crypto.KeyGenerator

public class KeyGenerator
extends Object

此类提供(对称)密钥生成器的功能。

密钥生成器是使用此类的某个 getInstance 类方法构造的。

KeyGenerator 对象可重复使用,也就是说,在生成密钥后,可以重复使用同一 KeyGenerator 对象来生成进一步的密钥。

生成密钥的方式有两种:与算法无关的方式,以及特定于算法的方式。两者之间的惟一不同是对象的初始化:

  • 与算法无关的初始化

    所有密钥生成器都具有密钥长度随机源 的概念。此 KeyGenerator 类中有一个 init 方法,它可采用这两个通用概念的参数。还有一个只带 keysize 参数的 init 方法,它使用具有最高优先级的提供程序的 SecureRandom 实现作为随机源(如果安装的提供程序都不提供 SecureRandom 实现,则使用系统提供的随机源)。此 KeyGenerator 类还提供一个只带随机源参数的 inti 方法。

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

  • 特定于算法的初始化

    在已经存在特定于算法的参数集的情况下,有两个具有 AlgorithmParameterSpec 参数的 init 方法。其中一个方法还有一个 SecureRandom 参数,而另一个方法将已安装的高优先级提供程序的 SecureRandom 实现用作随机源(或者作为系统提供的随机源,如果安装的提供程序都不提供 SecureRandom 实现)。

如果客户端没有显式地初始化 KeyGenerator(通过调用 init 方法),每个提供程序必须提供(和记录)默认初始化。

从以下版本开始:
1.4
另请参见:
SecretKey

构造方法摘要
protected KeyGenerator(KeyGeneratorSpi keyGenSpi, Provider provider, String algorithm)
          创建一个 KeyGenerator 对象。
 
方法摘要
 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)
          初始化此密钥生成器。
 
从类 java.lang.Object 继承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

构造方法详细信息

KeyGenerator

protected KeyGenerator(KeyGeneratorSpi keyGenSpi,
                       Provider provider,
                       String algorithm)
创建一个 KeyGenerator 对象。

参数:
keyGenSpi - 委托
provider - 提供程序
algorithm - 算法
方法详细信息

getAlgorithm

public final String getAlgorithm()
返回此 KeyGenerator 对象的算法名称。

此名称与在某个创建此 KeyGenerator 对象的 getInstance 调用中指定的名称相同。

返回:
KeyGenerator 对象的算法名称。

getInstance

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

参数:
algorithm - 所请求的密钥算法的标准名称。有关标准算法名称的信息,请参阅 Java Cryptography Extension Reference Guide 中的附录 A。
返回:
新的 KeyGenerator 对象
抛出:
NullPointerException - 如果指定算法为 null。
NoSuchAlgorithmException - 如果默认提供程序包或搜索到的任何其他提供程序包中不存在指定算法的密钥生成器。

getInstance

public static final KeyGenerator getInstance(String algorithm,
                                             String provider)
                                      throws NoSuchAlgorithmException,
                                             NoSuchProviderException
为来自指定提供程序的指定密钥算法生成一个 KeyGenerator 对象。

参数:
algorithm - 请求的密钥算法的标准名称。有关标准算法名称的信息,请参阅 Java Cryptography Extension Reference Guide 中的附录 A。
provider - 提供程序的名称
返回:
新的 KeyGenerator 对象
抛出:
NullPointerException - 如果指定算法为 null。
NoSuchAlgorithmException - 如果指定算法的密钥生成器在指定的提供程序中不可用。
NoSuchProviderException - 如果尚未配置指定的提供程序。
IllegalArgumentException - 如果该 provider 为 null。

getInstance

public static final KeyGenerator getInstance(String algorithm,
                                             Provider provider)
                                      throws NoSuchAlgorithmException
为来自指定提供程序的指定密钥算法生成一个 KeyGenerator 对象。注:该 provider 不必注册。

参数:
algorithm - 请求的密钥算法的标准名称。有关标准算法名称的信息,请参阅 Java Cryptography Extension Reference Guide 中的附录 A。
provider - 提供程序
返回:
新的 KeyGenerator 对象
抛出:
NullPointerException - 如果指定算法为 null。
NoSuchAlgorithmException - 如果指定算法的密钥生成器在指定的提供程序中不可用。
IllegalArgumentException - 如果该 provider 为 null。

getProvider

public final Provider getProvider()
返回此 KeyGenerator 对象的提供程序。

返回:
KeyGenerator 对象的提供程序

init

public final void init(SecureRandom random)
初始化此密钥生成器。

参数:
random - 此生成器的随机源

init

public final void init(AlgorithmParameterSpec params)
                throws InvalidAlgorithmParameterException
用指定参数集初始化此密钥生成器。

如果此密钥生成器需要所有随机字节,则它会使用已安装的高优先级提供程序的 SecureRandom 实现作为随机源来获得它们。(如果安装的提供程序都不提供 SecureRandom 的实现,则将使用系统提供的随机源。)

参数:
params - 密钥生成参数
抛出:
InvalidAlgorithmParameterException - 如果给定算法不适合此密钥生成器

init

public final void init(AlgorithmParameterSpec params,
                       SecureRandom random)
                throws InvalidAlgorithmParameterException
用指定参数集和用户提供的随机源初始化此密钥生成器。

参数:
params - 密钥生成参数
random - 此密钥生成器的随机源
抛出:
InvalidAlgorithmParameterException - 如果 params 不适合此密钥生成器

init

public final void init(int keysize)
初始化此密钥生成器,使其具有确定的密钥长度。

如果此密钥生成器需要所有随机字节,则它会将安装的高优先级提供程序的 SecureRandom 实现用作随机源来获取它们。(如果安装的提供程序都不提供 SecureRandom 的实现,则将使用系统提供的随机源。)

参数:
keysize - 密钥长度。这是特定于算法的一种规格,是按位数指定的。
抛出:
InvalidParameterException - 如果密钥长度错误或不受支持。

init

public final void init(int keysize,
                       SecureRandom random)
使用用户提供的随机源初始化此密钥生成器,使其具有确定的密钥长度。

参数:
keysize - 密钥长度。这是特定于算法的一种规格,是按位数指定的。
random - 此密钥生成器的随机源
抛出:
InvalidParameterException - 如果密钥长度错误或不受支持。

generateKey

public final SecretKey generateKey()
生成一个密钥。

返回:
新的密钥

JavaTM 2 Platform
Standard Ed. 5.0

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

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