0%

签名生成与验证

签名存在的意义

信息安全有三个需要解决的问题:

  1. 保密性:信息在传输时不被泄露。
  2. 完整性:信息在传输是不被篡改。
  3. 有效性:信息的使用者是合法的。

非对称加密解决了信息再传输时的泄露问题(即使被截取也无法获得有效信息),签名解决了完整性和有效性问题。

数字签名

签名是对非对称加密的逆应用,使用私钥加密信息,这样所有人都可以使用公钥验证信息是否来自唯一拥有私钥的用户。

生成签名

  1. 对消息进行哈希计算,得到哈希值。
  2. 用私钥对哈希值加密,生成签名。
  3. 将签名附加在消息后面,一起发送过去。

验证签名

  1. 提取消息中的签名。
  2. 用公钥对签名进行解密,得到哈希值1。
  3. 对消息中的正文进行哈希计算,得到哈希值2。
  4. 如果1和2相等,则验证成功。

在实际应用中,还需要对公钥进行验证,也就是证书。