将报文按双方约定的HASH算法计算得到一个固定位数的报文摘要。在数学上保证:只要改动报文中任何一位,重新计算出的报文摘要值就会与原先的值不相符。这样就保证了报文的不可更改性。
将该报文摘要值用发送者的私人密钥加密,然后连同原报文一起发送给接收者,而产生的报文即称数字签名。
接收者尝试用公钥解数字签名,如果能解开,会得到摘要,说明是正确的人发送的。
接着用约定的算法对摘要进行解析,与上一步得到的摘要进行对比。如果两者一致,就证明信息未被修改过。
得出:数字签名是检验数据是否是拥有私钥的那个人发的,并且数据是否被修改过。
数字证书:检验数字签名是否是正确的人签的。
用https来说明证书的作用:
初始化
证书中心用自己的私钥,对服务器的公钥和一些相关信息一起加密,生成”数字证书”(Digital Certificate)。
1 客户端向服务器发出加密请求。
2 服务器用自己的私钥加密网页以后,连同本身的数字证书,一起发送给客户端。
3 客户端(浏览器)的”证书管理器”,有”受信任的根证书颁发机构”列表。客户端会根据这张列表,查看 解开数字证书的公钥是否在列表之内。也就是用CA颁布的公钥检测是否能解开证书。
4 如果解开了,但是数字证书记载的网址,与你正在浏览的网址不一致,就说明这张证书可能被冒用,浏览器会发出警告。
5 如果这张数字证书不是由受信任的机构颁发的,浏览器会发出另一种警告
6 如果数字证书是可靠的,客户端就可以得到证书中的服务器公钥。对数字签名用服务器公钥进行确认后,就可以对信息进行加密,然后与服务器交换加密信息。