java.security
类 Signature
java.lang.Object java.security.SignatureSpi java.security.Signature
-
public abstract class Signature
- extends SignatureSpi
此 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
类中定义的方法即可;超类中的所有方法都是供那些希望提供自己的数字签名算法实现的加密服务提供程序使用的。