RSA结合MD5实现数字签名

1.MD5

MD5是一种非常著名的散列算法,散列算法具有如下特点:

>不同内容的报文具有不同的散列码,且一旦原始报文发生改变,通过计算得到的散列码也会完全不同
>散列函数是单向的,即得到散列码非常容易,反推原始报文非常困难
>对于任何一个报文,无法预知它的散列码
>散列码具有固定的长度,不管原始报文长度如何,通过散列函数运算后的散列码都具有一样的长度,MD5运算后长度为128位

2.RSA

RSA是一种著名的非对称加密算法

>加密和解密使用不同的密钥处理;
>加密时将信息通过私钥(仅自己知道)进行加密得到密文
>解密时将密文通过公钥(与私钥对应)进行解密得到明文信息

3.数字签名

计算机系统中传送/存储的重要文件/数据/信息等,一般需要有某种方式来确认其真实性
即接收者能够确认自己而得到的信息确实是由该信息所声称的发送者发出的。

数字签名主要由两个算法组成:

签名算法

>A要给B发送一个信息,A先通过MD5加密拿到散列码(消息摘要)
>然后把散列码通过A的私钥加密得到该信息的数字签名
>然后A把信息原文与数字签名一起发送给B

验证算法

>B把信息原文通过MD5加密得到自己的散列码
>B把数字签名用公钥解密得到传递过来的散列码
>比较两个散列码,如一致则说明消息原文没有被修改

发表评论

电子邮件地址不会被公开。 必填项已用*标注

1 × 3 =