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
类 KeyAgreementSpi

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

public abstract class KeyAgreementSpi
extends Object

此类为 KeyAgreement 类定义了服务提供程序接口 (SPI)。此类中的所有抽象方法必须由希望提供特定密钥一致算法实现的每个加密服务提供程序来实现。

建立共享秘密所涉及的密钥由某个密钥生成器(KeyPairGeneratorKeyGenerator,一个 KeyFactory)来创建,或从密钥一致性协议的中间阶段来创建 engineDoPhase

对于密钥交换中的每个对应物,需要调用 engineDoPhase。例如,如果密钥交换是与其他一个参与者进行的,则需要调用一次 engineDoPhase,将 lastPhase 标志设置为 true。如果密钥交换是与其他两个参与者进行的,则需要调用两次 engineDoPhase,第一次将 lastPhase 标志设置为 false,第二次将它设置为 true。密钥交换可能涉及任意数量的参与者。

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

构造方法摘要
KeyAgreementSpi()
           
 
方法摘要
protected abstract  Key engineDoPhase(Key key, boolean lastPhase)
          用给定密钥执行此密钥一致性的下一个阶段,该给定密钥是从此密钥一致性中涉及的其他某个参与者那里接收的。
protected abstract  byte[] engineGenerateSecret()
          生成共享秘密密钥并在新的缓冲区中返回它。
protected abstract  int engineGenerateSecret(byte[] sharedSecret, int offset)
          生成共享秘密密钥,并将从 offset 开始(包括)的部分放入缓冲区 sharedSecret
protected abstract  SecretKey engineGenerateSecret(String algorithm)
          创建共享秘密密钥,并将它作为所请求算法类型的秘密密钥对象返回。
protected abstract  void engineInit(Key key, AlgorithmParameterSpec params, SecureRandom random)
          用给定密钥、算法参数集和随机源初始化此密钥一致性。
protected abstract  void engineInit(Key key, SecureRandom random)
          用给定密钥和随机源初始化此密钥一致性。
 
从类 java.lang.Object 继承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

构造方法详细信息

KeyAgreementSpi

public KeyAgreementSpi()
方法详细信息

engineInit

protected abstract void engineInit(Key key,
                                   SecureRandom random)
                            throws InvalidKeyException
用给定密钥和随机源初始化此密钥一致性。给定密钥需要包含此密钥一致性所需的所有算法参数。

如果该密钥一致算法需要随机字节,则从给定的随机源 random 中获得它们。不过,如果基础算法实现不需要任何随机字节,则忽略 random

参数:
key - 参与者的私有信息。例如,对于 Diffie-Hellman 密钥一致性,这应是参与者自己的 Diffie-Hellman 私钥。
random - 随机源
抛出:
InvalidKeyException - 如果给定的密钥不适合此密钥一致性,即属于错误类型或有一个不一致的算法类型。

engineInit

protected abstract void engineInit(Key key,
                                   AlgorithmParameterSpec params,
                                   SecureRandom random)
                            throws InvalidKeyException,
                                   InvalidAlgorithmParameterException
用给定密钥、算法参数集和随机源初始化此密钥一致性。

参数:
key - 参与者的私有信息。例如,对于 Diffie-Hellman 密钥一致性,这应是参与者自己的 Diffie-Hellman 私钥。
params - 密钥一致性参数
random - 随机源
抛出:
InvalidKeyException - 如果给定的密钥不适合此密钥一致性,即属于错误类型或有一个不一致的算法类型。
InvalidAlgorithmParameterException - 如果给定算法不适合此密钥一致性。

engineDoPhase

protected abstract Key engineDoPhase(Key key,
                                     boolean lastPhase)
                              throws InvalidKeyException,
                                     IllegalStateException
用给定密钥执行此密钥一致性的下一个阶段,该给定密钥是从此密钥一致性中涉及的其他某个参与者那里接收的。

参数:
key - 此阶段的密钥。例如,对于两个参与者之间的 Diffie-Hellman,此密钥应是其他参与者的 Diffie-Hellman 公钥。
lastPhase - 指示这是否是此密钥一致性的最后阶段的标志。
返回:
从此阶段得到的(中间)密钥;如果此阶段不产生密钥,则返回 null
抛出:
InvalidKeyException - 如果给定密钥不适合此阶段。
IllegalStateException - 如果尚未初始化此密钥一致性。

engineGenerateSecret

protected abstract byte[] engineGenerateSecret()
                                        throws IllegalStateException
生成共享秘密密钥并在新的缓冲区中返回它。

此方法重新设置此 KeyAgreementSpi 对象,以便能够将它重新用于进一步的密钥一致性。如果没有使用某个 engineInit 方法重新初始化此密钥一致性,则将相同的私有信息和算法参数用于后续密钥一致性。

返回:
带有共享秘密密钥的新缓冲区
抛出:
IllegalStateException - 如果尚未实现此密钥一致性

engineGenerateSecret

protected abstract int engineGenerateSecret(byte[] sharedSecret,
                                            int offset)
                                     throws IllegalStateException,
                                            ShortBufferException
生成共享秘密密钥,并将从 offset 开始(包括)的部分放入缓冲区 sharedSecret

如果 sharedSecret 缓冲区太小而无法保存该结果,则抛出 ShortBufferException。在此情况下,应该用更大的输出缓冲区重复进行此调用。

此方法重新设置此 KeyAgreementSpi 对象,以便能够将它重新用于进一步的密钥一致性。如果没有使用某个 engineInit 方法重新初始化此密钥一致性,则将相同的私有信息和算法参数用于后续密钥一致性。

参数:
sharedSecret - 共享秘密密钥的缓冲区
offset - 将存储共享秘密密钥的 sharedSecret 中的偏移量
返回:
放入 sharedSecret 中的字节数
抛出:
IllegalStateException - 如果尚未实现此密钥一致性
ShortBufferException - 如果给定输出缓冲区太小而无法保存该秘密密钥

engineGenerateSecret

protected abstract SecretKey engineGenerateSecret(String algorithm)
                                           throws IllegalStateException,
                                                  NoSuchAlgorithmException,
                                                  InvalidKeyException
创建共享秘密密钥,并将它作为所请求算法类型的秘密密钥对象返回。

此方法重新设置此 KeyAgreementSpi 对象,以便能够将它重新用于进一步的密钥一致性。如果没有使用某个 engineInit 方法重新初始化此密钥一致性,则将相同的私有信息和算法参数用于后续密钥一致性。

参数:
algorithm - 所请求秘密密钥的算法
返回:
共享的秘密密钥
抛出:
IllegalStateException - 如果此密钥一致性尚未实现
NoSuchAlgorithmException - 如果所请求的秘密密钥算法不可用
InvalidKeyException - 如果无法使用共享秘密密钥材料生成所请求算法类型的秘密密钥(例如,密钥材料太短缺)

JavaTM 2 Platform
Standard Ed. 5.0

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

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