|
JavaTM 2 Platform Standard Ed. 5.0 |
|||||||||
上一个类 下一个类 | 框架 无框架 | |||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |
java.lang.Object java.security.SignatureSpi java.security.Signature
public abstract class Signature
此 Signature 类用来为应用程序提供数字签名算法功能。数字签名用来保证数字数据的真实性和完整性。
在所有算法当中,数字签名可以是 NIST 标准的 DSA,它使用 DSA 和 SHA-1。可以将使用 SHA-1 消息摘要算法的 DSA 算法可指定为 SHA1withDSA。如果使用 RSA,对消息摘要算法将有多种选择,因此,可以将签名算法指定为 MD2withRSA、MD5withRSA 或 SHA1withRSA。没有默认的算法名称,所以必须为其指定名称。
与 Java Security 中其他基于算法的类一样,Signature 提供了与实现无关的算法,因此,调用方(应用程序代码)会请求特定的签名算法并将它传回给已被正确初始化的 Signature 对象。如果需要,还可以通过特定的提供程序请求特定的算法。请参见 getInstance
方法。
因此,有以下两种请求 Signature 算法对象的方法:或者仅指定算法名称,或者既指定算法名称又指定包提供程序。
Signature 对象可用来生成和验证数字签名。
使用 Signature 对象签名数据或验证签名包括以下三个阶段:
initVerify
),或使用
initSign(PrivateKey)
和 initSign(PrivateKey, SecureRandom)
)。
根据初始化类型,这可更新要签名或验证的字节。请参见 update
方法。
sign
方法和 verify
方法。
注意,由于历史原因,此类是从 SignatureSpi
中抽象出来的,并进行了扩展。应用程序开发人员只需注意在此 Signature
类中定义的方法即可;超类中的所有方法都是供那些希望提供自己的数字签名算法实现的加密服务提供程序使用的。
字段摘要 | |
---|---|
protected static int |
SIGN
可能的 state 值,表示此签名对象已经初始化签名。 |
protected int |
state
此签名对象的当前状态。 |
protected static int |
UNINITIALIZED
可能的 state 值,表示尚未初始化此签名对象。 |
protected static int |
VERIFY
可能的 state 值,表示此签名对象已经初始化验证。 |
从类 java.security.SignatureSpi 继承的字段 |
---|
appRandom |
构造方法摘要 | |
---|---|
protected |
Signature(String algorithm)
创建指定算法的 Signature 对象。 |
方法摘要 | |
---|---|
Object |
clone()
如果此实现可以复制,则返回副本。 |
String |
getAlgorithm()
返回此签名对象的算法名称。 |
static Signature |
getInstance(String algorithm)
生成实现指定摘要算法的 Signature 对象。 |
static Signature |
getInstance(String algorithm,
Provider provider)
如果提供程序能够提供这样的算法,则将生成一个实现指定算法的 Signature 对象,作为指定提供程序提供的对象。 |
static Signature |
getInstance(String algorithm,
String provider)
如果提供程序能够提供这样的算法,则将生成一个实现指定算法的 Signature 对象,作为指定提供程序提供的对象。 |
Object |
getParameter(String param)
已过时。 |
AlgorithmParameters |
getParameters()
返回与此签名对象一起使用的参数。 |
Provider |
getProvider()
返回此签名对象的提供程序。 |
void |
initSign(PrivateKey privateKey)
初始化此用于签名的对象。 |
void |
initSign(PrivateKey privateKey,
SecureRandom random)
初始化此用于签名的对象。 |
void |
initVerify(Certificate certificate)
使用来自给定证书的公钥初始化此用于验证的对象。 |
void |
initVerify(PublicKey publicKey)
初始化此用于验证的对象。 |
void |
setParameter(AlgorithmParameterSpec params)
使用指定的参数集初始化此签名引擎。 |
void |
setParameter(String param,
Object value)
已过时。 使用 setParameter 取代。 |
byte[] |
sign()
返回所有已更新数据的签名字节。 |
int |
sign(byte[] outbuf,
int offset,
int len)
完成签名操作并从 offset 开始,将得到的签名字节存储在提供的缓冲区 outbuf 中。 |
String |
toString()
返回此签名对象的字符串表示形式,以提供包括对象状态和所用算法名称在内的信息。 |
void |
update(byte b)
更新要由字节签名或验证的数据。 |
void |
update(byte[] data)
使用指定的字节数组更新要签名或验证的数据。 |
void |
update(byte[] data,
int off,
int len)
从指定的偏移量开始,使用指定的字节数组更新要签名或验证的数据。 |
void |
update(ByteBuffer data)
使用指定的 ByteBuffer 更新要签名或验证的数据。 |
boolean |
verify(byte[] signature)
验证传入的签名。 |
boolean |
verify(byte[] signature,
int offset,
int length)
从指定的偏移量开始,验证指定的字节数组中传入的签名。 |
从类 java.lang.Object 继承的方法 |
---|
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
字段详细信息 |
---|
protected static final int UNINITIALIZED
protected static final int SIGN
protected static final int VERIFY
protected int state
构造方法详细信息 |
---|
protected Signature(String algorithm)
algorithm
- 算法的标准字符串名称。有关标准算法名称的信息,请参阅《Java Cryptography Architecture API Specification & Reference》中的附录 A。方法详细信息 |
---|
public static Signature getInstance(String algorithm) throws NoSuchAlgorithmException
algorithm
- 请求算法的标准名称。有关标准算法名称的信息,请参阅《Java Cryptography Architecture API Specification & Reference》中的附录 A。
NoSuchAlgorithmException
- 如果环境中未提供该算法。public static Signature getInstance(String algorithm, String provider) throws NoSuchAlgorithmException, NoSuchProviderException
algorithm
- 所请求算法的名称。有关标准算法名称的信息,请参阅《Java Cryptography Architecture API Specification & Reference》中的附录 A。provider
- 提供程序的名称。
NoSuchAlgorithmException
- 如果在由请求的提供程序提供的包中未提供该算法。
NoSuchProviderException
- 如果环境中未提供该提供程序。
IllegalArgumentException
- 如果提供程序的名称为 null 或空。Provider
public static Signature getInstance(String algorithm, Provider provider) throws NoSuchAlgorithmException
provider
不一定都需要注册。
algorithm
- 所请求算法的名称。有关标准算法名称的信息,请参阅《Java Cryptography Architecture API Specification & Reference》中的附录 A。provider
- 提供程序。
NoSuchAlgorithmException
- 如果在由请求的提供程序提供的包中未提供该算法。
IllegalArgumentException
- 如果 provider
为 null。Provider
public final Provider getProvider()
public final void initVerify(PublicKey publicKey) throws InvalidKeyException
publicKey
- 其签名将被验证的标识的公钥。
InvalidKeyException
- 如果密钥无效。public final void initVerify(Certificate certificate) throws InvalidKeyException
如果证书是 X.509 类型且具有标记为重要的 key usage 扩展字段,并且 key usage 扩展字段的值暗示着证书中的公钥及其对应的私钥不允许用于数字签名,则抛出 InvalidKeyException
。
certificate
- 其签名将被验证的标识的证书。
InvalidKeyException
- 如果证书中的公钥未被正确解码,或者未包括所请求的参数信息,或者不能用于数字签名。public final void initSign(PrivateKey privateKey) throws InvalidKeyException
privateKey
- 将生成其签名的标识的私钥。
InvalidKeyException
- 如果密钥无效。public final void initSign(PrivateKey privateKey, SecureRandom random) throws InvalidKeyException
privateKey
- 将生成其签名的标识的私钥。random
- 此签名的随机源。
InvalidKeyException
- 如果密钥无效。public final byte[] sign() throws SignatureException
对此方法的调用将把此签名对象重新设置到以前为进行签名而通过调用 initSign(PrivateKey)
对其初始化时的状态。也就是说,如果需要,通过重新调用 update
和 sign
,可重新设置对象,并通过它从同一个签署者中生成其他人的签名。
SignatureException
- 如果此签名对象未得到正确初始化,或者此签名算法不能处理所提供的输入数据。public final int sign(byte[] outbuf, int offset, int len) throws SignatureException
offset
开始,将得到的签名字节存储在提供的缓冲区 outbuf
中。签名的格式取决于基础签名方案。
此签名对象将被重新设置到其初始状态(对其中的一种 initSign
方法调用之后所处的状态),并可重新使用此签名对象,用同一个私钥生成将来的签名。
outbuf
- 输出签名结果的缓冲区。offset
- 到存储签名的 outbuf
的偏移量。len
- outbuf
中分配给签名的字节数。
outbuf
中的字节数。
SignatureException
- 如果此签名对象未得到正确初始化,如果此签名算法无法处理所提供的输入数据,或者 len
少于实际签名长度。public final boolean verify(byte[] signature) throws SignatureException
对此方法的调用将把此签名对象重新设置到以前为进行验证而通过调用 initVerify(PublicKey)
对其初始化时的状态。也就是说,该对象将被重新设置,并可用来验证其公钥在调用 initVerify
时所指定的标识中的其他签名。
signature
- 要验证的签名字节。
SignatureException
- 如果此签名对象未得到正确初始化,传入的签名未得到正确解码,或类型错误,如果此签名算法不能处理所提供的输入数据等。public final boolean verify(byte[] signature, int offset, int length) throws SignatureException
对此方法的调用将把此签名对象重新设置到以前为进行验证而通过调用 initVerify(PublicKey)
对其初始化时的状态。也就是说,该对象将被重新设置,并可用来验证其公钥在调用 initVerify
时所指定的标识中的其他签名。
signature
- 要验证的签名字节。offset
- 字节数组中起始处的偏移量。length
- 要使用的字节数(从偏移量起始处算起)。
SignatureException
- 如果此签名对象未得到正确初始化,传入的签名未得到正确解码,或者类型错误,如果此签名算法无法处理所提供的输入数据等。
IllegalArgumentException
- 如果 signature
字节数组为 null,或者 offset
或 length
小于 0,或者 offset
和 length
的和大于 signature
字节数组的长度。public final void update(byte b) throws SignatureException
b
- 用于更新的字节。
SignatureException
- 如果此签名对象未得到正确初始化。public final void update(byte[] data) throws SignatureException
data
- 用于更新的字节数组。
SignatureException
- 如果此签名对象未得到正确初始化。public final void update(byte[] data, int off, int len) throws SignatureException
data
- 字节数组。off
- 到字节数组开始处的偏移量。len
- 要使用的字节数,从偏移量起始处算起。
SignatureException
- 如果此签名对象未得到正确初始化。public final void update(ByteBuffer data) throws SignatureException
data.position()
处开始的 data.remaining()
字节。返回时,缓冲区的位置将等于其限制;其限制并未改变。
data
- ByteBuffer
SignatureException
- 如果此签名对象未得到正确初始化。public final String getAlgorithm()
public String toString()
@Deprecated public final void setParameter(String param, Object value) throws InvalidParameterException
setParameter
取代。
param
- 参数的字符串标示符。value
- 参数值。
InvalidParameterException
- 如果 param
是此算法引擎的无效参数,或者已经设置参数并且不能重新设置,或者出现了安全异常等等。getParameter(java.lang.String)
public final void setParameter(AlgorithmParameterSpec params) throws InvalidAlgorithmParameterException
params
- 参数
InvalidAlgorithmParameterException
- 如果给定的参数不适合此签名引擎getParameters()
public final AlgorithmParameters getParameters()
返回的参数可能与用来初始化此签名的参数相同;如果此签名需要算法参数但却未使用任何参数进行初始化,则返回的参数可能会包含由基础签名实现使用的默认和随机生成的参数值的组合。
setParameter(AlgorithmParameterSpec)
@Deprecated public final Object getParameter(String param) throws InvalidParameterException
param
- 参数的字符串名称。
InvalidParameterException
- 如果 param
是此引擎的无效参数,或者尝试获取此参数时出现了其他异常。setParameter(String, Object)
public Object clone() throws CloneNotSupportedException
SignatureSpi
中的 clone
CloneNotSupportedException
- 如果调用一个不支持 Cloneable
的实现。Cloneable
|
JavaTM 2 Platform Standard Ed. 5.0 |
|||||||||
上一个类 下一个类 | 框架 无框架 | |||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |
版权所有 2004 Sun Microsystems, Inc. 保留所有权利。 请遵守许可证条款。另请参阅文档重新分发政策。