数字签名是用来核实发送消息方身份的,能够确保消息没被篡改。
数字签名采用的是非对称加密。
举个例子,小明要给小红发送一份邮件:
- 小明生成密钥对,公钥和私钥,私钥自己保存,不让任何人知道;公钥给小红。
- 小明将邮件的内容通过 hash 算法生成
数字摘要
。 - 小明使用私钥加密
数字摘要
生成数字签名
。 - 小明将要发送的
内容和数字签名
一起发送给小红。 - 小红收到内容和签名后,使用
公钥
解密数字签名
得到数字摘要
— a1。 - 小红使用相同的 hash 算法将内容生成
数字摘要
— a2,比较 a1 和 a2 是否相等,如果相等则说明邮件未被篡改。
注意:数字签名是使用非对称加密算法对内容的 hash 值
进行加密,而不是对内容本身
加密。