首页 > 代码库 > java中的Signature

java中的Signature

一、概述

类结构:

java.lang.Object
  技术分享java.security.SignatureSpi
      技术分享java.security.Signature
声明:public abstract class Signature extendsSignatureSpi


二、字段

1、protected static final int UNINITIALIZED   可能的 state 值,表示尚未初始化此签名对象。 

2、protected static final intSIGN  可能的 state 值,表示此签名对象已经初始化签名。

3、protected static final intVERIFY  可能的 state 值,表示此签名对象已经初始化验证。

4、protected intstate  此签名对象的当前状态。


三、构造方法

protected Signature(String algorithm)  创建指定算法的 Signature 对象。
参数:algorithm - 算法的标准字符串名称。
四、方法详细
1、public static Signature getInstance(String algorithm) throws NoSuchAlgorithmException 返回实现指定签名算法的 Signature 对象。

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

注意,可以通 Security.getProviders() 方法获取已注册提供者列表。
参数:algorithm - 所请求算法的标准名称。有关标准算法名称的信息
返回:新 Signature 对象。
抛出:NoSuchAlgorithmException - 如果没有 Provider 支持指定算法的 Signature 实现。
2、public static Signature getInstance(String algorithm,String provider)throws NoSuchAlgorithmException,NoSuchProviderException

返回实现指定签名算法的 Signature 对象。

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

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

参数:
algorithm - 所请求算法的标准名称。有关标准算法名称的信息,请参阅 Java Cryptography Architecture API Specification & Reference 中的附录 A。
provider - 提供者的名称。
返回:
新 Signature 对象。
抛出:
NoSuchAlgorithmException - 如果指定算法的 SignatureSpi 实现不能从指定提供者获得。
NoSuchProviderException - 如果指定提供者未在安全提供者列表中注册。
IllegalArgumentException - 如果提供者的名称为 null 或空。

3、public static SignaturegetInstance(String algorithm,  Provider provider) throwsNoSuchAlgorithmException  返回实现指定签名算法的 Signature 对象。

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

参数:
algorithm - 所请求算法的标准名称。有关标准算法名称的信息,请参阅 Java Cryptography Architecture API Specification & Reference 中的附录 A。
provider - 提供者。
返回:
新 Signature 对象。
抛出:
NoSuchAlgorithmException - 如果指定算法的 SignatureSpi 实现不能从指定提供者对象获得。
IllegalArgumentException - 如果 provider 为 null。
4、public final ProvidergetProvider()  返回此签名对象的提供者。


5、public final voidinitVerify(PublicKey publicKey) throwsInvalidKeyException  初始化此用于验证的对象。如果使用其他参数再次调用此方法,此调用的结果将无效。

参数:
publicKey - 将验证其签名的标识的公钥。
抛出:
InvalidKeyException - 如果密钥无效。

6、public final void initVerify(Certificate certificate) throwsInvalidKeyException  使用来自给定证书的公钥初始化此用于验证的对象。

如果证书是 X.509 类型且具有标记为重要的 key usage 扩展字段,并且 key usage 扩展字段的值暗示着证书中的公钥及其对应的私钥不允许用于数字签名,则抛出InvalidKeyException

参数:
certificate - 将验证其签名的标识的证书。
抛出:
InvalidKeyException - 如果证书中的公钥未被正确解码,或者未包括所请求的参数信息,或者不能用于数字签名。
7、public final void initSign(PrivateKey privateKey) throwsInvalidKeyException  初始化这个用于签名的对象。如果使用其他参数再次调用此方法,此调用的结果将无效。

参数:
privateKey - 将生成其签名的标识的私钥。
抛出:
InvalidKeyException - 如果密钥无效。

8、public final void initSign(PrivateKey privateKey, SecureRandom random) throwsInvalidKeyException 

初始化这个用于签名的对象。如果使用其他参数再次调用此方法,此调用的结果将无效。

参数:
privateKey - 将生成其签名的标识的私钥。
random - 此签名的随机源。
抛出:
InvalidKeyException - 如果密钥无效。

9、public final byte[] sign() throwsSignatureException   返回所有已更新数据的签名字节。签名的格式取决于基础签名方案。

对此方法的调用将把此签名对象重新设置到以前为进行签名而通过调用 initSign(PrivateKey) 对其初始化时的状态。也就是说,如果需要,通过重新调用updatesign,可重新设置对象,并且可以通过它从同一个签署者中生成其他人的签名。

返回:
签名操作结果的签名字节。
抛出:
SignatureException - 如果此签名对象未得到正确初始化,或者此签名算法不能处理所提供的输入数据。
10、public final int sign(byte[] outbuf,int offset, int len) throwsSignatureException  完成签名操作并从offset 开始,将得到的签名字节存储在提供的缓冲区 outbuf 中。签名的格式取决于基础签名方案。 

此签名对象将被重新设置到其初始状态(对其中的一种 initSign 方法调用之后所处的状态),并且可重新使用此签名对象,用同一个私钥生成将来的签名。 

参数:
outbuf - 输出签名结果的缓冲区。
offset - 到存储签名的 outbuf 的偏移量。
len - outbuf 中分配给签名的字节数。
返回:
放入 outbuf 中的字节数。
抛出:
SignatureException - 如果此签名对象未得到正确初始化,如果此签名算法无法处理所提供的输入数据,或者len 少于实际签名长度。

11、public final boolean verify(byte[] signature)  throwsSignatureException  验证传入的签名。

对此方法的调用将把此签名对象重新设置到以前为进行验证而通过调用 initVerify(PublicKey) 对其初始化时的状态。也就是说,该对象将被重新设置,并且可以用来验证调用initVerify 时其公钥所指定的标识中的其他签名。 

参数:
signature - 要验证的签名字节。
返回:
如果签名得到验证,则返回 true,否则将返回 false。
抛出:
SignatureException - 如果此签名对象未得到正确初始化,传入的签名未得到正确解码,或类型错误,如果此签名算法不能处理所提供的输入数据等。
12、public final boolean verify(byte[] signature, int offset,int length) throwsSignatureException  从指定的偏移量开始,验证指定的 byte 数组中传入的签名。

对此方法的调用将把此签名对象重新设置到以前为进行验证而通过调用 initVerify(PublicKey) 对其初始化时的状态。也就是说,该对象将被重新设置,并且可以用来验证调用initVerify 时其公钥所指定的标识中的其他签名。

参数:
signature - 要验证的签名字节。
offset - byte 数组中起始处的偏移量。
length - 要使用的字节数(从偏移量起始处算起)。
返回:
如果签名得到验证,则返回 true,否则将返回 false。
抛出:
SignatureException - 如果此签名对象未得到正确初始化,传入的签名未得到正确解码,或者类型错误,如果此签名算法无法处理所提供的输入数据等。
IllegalArgumentException - 如果signature byte 数组为 null,或者 offsetlength 小于 0,或者offsetlength 的和大于 signature byte 数组的长度。

13、public final void update(byte b) throwsSignatureException  更新要由字节签名或验证的数据。

参数:
b - 用于更新的字节。
抛出:
SignatureException - 如果此签名对象未得到正确初始化。

14、public final void update(byte[] data) throwsSignatureException  使用指定的 byte 数组更新要签名或验证的数据。

参数:
data - 用于更新的 byte 数组。
抛出:
SignatureException - 如果此签名对象未得到正确初始化。
15、public final void update(byte[] data, int off, int len) throwsSignatureException   从指定的偏移量开始,使用指定的 byte 数组更新要签名或验证的数据。

参数:
data - byte 数组。
off - 到 byte 数组开始处的偏移量。
len - 要使用的字节数,从偏移量起始处算起。
抛出:
SignatureException - 如果此签名对象未得到正确初始化。
16、public final void update(ByteBuffer data) throwsSignatureException  使用指定的 ByteBuffer 更新要签名或验证的数据。处理从data.position() 处开始的 data.remaining() 字节。返回时,缓冲区的位置将等于其限制;其限制并未改变。 

参数:
data - ByteBuffer
抛出:
SignatureException - 如果此签名对象未得到正确初始化。

17、public final StringgetAlgorithm()  返回此签名对象的算法名称。


18、publicStringtoString()  返回此签名对象的字符串表示形式,以提供包括对象状态和所用算法名称在内的信息。


19、public final voidsetParameter(String param, Object value)  throwsInvalidParameterException  

已过时。 使用 setParameter 取代。

将指定的算法参数设置为指定的值。此方法提供了一种通用机制,通过它可以设置此对象的各种参数。参数可以是算法的任何可设置参数,如参数大小、签名生成的随机源位(如果适当),或者表示是否执行具体但可选的计算。每个参数都需要统一的、特定于算法的命名方案,但此时尚未指定这种方案。

参数:
param - 参数的字符串标示符。
value - 参数值。
抛出:
InvalidParameterException - 如果param 是此算法引擎的无效参数,或者已经设置参数并且不能重新设置,或者出现了安全异常等等。
另请参见:
getParameter(java.lang.String)
20、public final void setParameter(AlgorithmParameterSpec params) throwsInvalidAlgorithmParameterException

使用指定的参数集初始化此签名引擎。

参数:
params - 参数
抛出:
InvalidAlgorithmParameterException - 如果给定的参数不适合此签名引擎
另请参见:
getParameters()
21、public final AlgorithmParametersgetParameters()  

返回与此签名对象一起使用的参数。

返回的参数可能与用来初始化此签名的参数相同;如果此签名需要算法参数但却未使用任何参数进行初始化,则返回的参数可能会包含由底层签名实现所使用的默认值和随机生成的参数值的组合。

返回:
用于此签名的参数,如果此签名不使用任何参数,则返回 null。
从以下版本开始:
1.4
另请参见:
setParameter(AlgorithmParameterSpec)
22、public final ObjectgetParameter(String param) throwsInvalidParameterException

已过时。 

获取指定的算法参数的值。此方法提供了一种通用机制,通过它能够获取此对象的各种参数。参数可以是算法的任何可设置参数,如参数大小、签名生成的随机源位(如果适当),或者表示是否执行具体但可选的计算。每个参数都需要统一的、特定于算法的命名方案,但此时尚未指定这种方案。

参数:
param - 参数的字符串名称。
返回:
表示参数值的对象,如果没有,则返回 null。
抛出:
InvalidParameterException - 如果param 是此引擎的无效参数,或者尝试获取此参数时出现其他异常。
另请参见:
setParameter(String, Object)
23、public Objectclone() throwsCloneNotSupportedException

如果此实现可以复制,则返回副本。

覆盖:
SignatureSpi 中的clone
返回:
如果此实现可以复制,则返回一个副本。
抛出:
CloneNotSupportedException - 如果调用一个不支持Cloneable 的实现。
另请参见:
Cloneable



java中的Signature