数字签名算法消息传递模型
由消息发送方构建密钥对,这里由甲方完成。
由消息发送方公布公钥至消息接收方,这里由甲方将公钥公布给乙方。
注意如加密算法区别,这里甲方使用私钥对数据签名,数据与签名形成一则消息发送给乙方,私钥仅用于签名,公钥仅用于验证。
RSA
RSA数字签名算法源于RSA公钥密码算法的思想,将RSA公钥密码算法按照数字签名的方式运用。RSA数字签名算法是迄今为止应用最为广泛的数字签名算法。 RSA数字签名算法的实现如RSA加密算法一致。RSA数字签名算法主要可分为MD系列和SHA系列。
MD系列主要包括:MD2withRSA和MD5withRSA。
SHA系列主要包括:SHA1withRSA,SHA224withRSA,�SHA256withRSA,SHA384withRSA,SHA512withRSA。
Java 6提供了MD2withRSA,MD5withRSA,SHA1withRSA支持,其他四中SHA算法第三方加密组建包Bouncy Castle提供支持。
签名过程:
过程:
1)消息发送者产生一个密钥对(私钥+公钥),然后将公钥发送给消息接收者
2)消息发送者使用消息摘要算法对原文进行加密(加密后的密文称作摘要)
3)消息发送者将上述的摘要使用私钥加密得到密文--这个过程就被称作签名处理,得到的密文就被称作签名(注意,这个签名是名词)
4)消息发送者将原文与密文发给消息接收者
5)消息接收者使用公钥对密文(即签名)进行解密,得到摘要值content1
6)消息接收者使用与消息发送者相同的消息摘要算法对原文进行加密,得到摘要值content2
7)比较content1是不是与content2相等,若相等,则说明消息没有被篡改(消息完整