下面是一个在JAVA语言中,使用 DSA签名算法 来进行 进行数字签名的一个示例。
DSA (Digital Signature Algorithm)是Schnorr和ElGamal签名算法的变种,被美国NIST作为数字签名标准(DigitalSignature Standard)。
参照JDK文档中关于
Signature类的叙述:NIST标准的DSA算法应该本身就包含了 散列算法 SHA-1 和 加密算法 DSA 。
Signature.getInstance("DSA") 等同于 Signature.getInstance("SHA1withDSA");
如果使用 DSA 作为数字签名的加密算法,则只能使用 SHA1 作为消息散列(即消息摘要)算法。
如果使用 RSA 作 为数字签名加密算法,对消息摘要算法则会有多种选择,因此,可以将签名算法指定为 MD2withRSA 、 MD5withRSA 或 SHA1withRSA 。
关于使用RSA实现数字签名请参照《
用RSA实现数字签名 》
如果你对 数字签名 还不熟悉,请先阅读《
数字签名简介 》及《
Java的数字签名和数字证书》
DSA_Demo.java文件
import java.security.InvalidKeyException;
import java.security.KeyPair;
import java.security.Ke