数字签名和消息摘要此处只解释针对公开密钥系统的情况。
一:签名
采用公开密钥系统的数字签名是:明文通过A的私钥加密。
A如果想给B发送消息,就把明文的签名发送给B即可。
二:消息摘要
签名直接对明文处理,这样速度太慢。于是出现了消息摘要。
消息摘要是一个散列函数,功能是对明文处理成一段散列值。
现在的方案是附加签名的消息:A给B发送消息时,把明文和消息摘要的签名发送给B即可。这样收到消息后,B对明文进行散列值运算,对消息摘要的签名用A的公钥解密,由于第三方不可能同时伪造明文和签名使得两个散列值相同,所以:
如何两个散列值相同,B就可以判断明文是A发送的(因为是用A的公钥解密的),并且没有被改动过(否则,散列值不相同)。
三:证书
B如何知道A的公钥呢?而且要保证公钥没有造假。这时B需要查看A的证书。
证书是中心机构发给A的附加签名的消息,B又如何知道中心机构的公钥呢?这个是人人皆知的,不需要再查看证书。