面试题答案
一键面试- 数字摘要:
- 发送方在发送数据前,会对要发送的数据运用特定的哈希算法(如MD5、SHA - 1、SHA - 256等)生成一个固定长度的摘要。哈希算法具有单向性,即从数据容易计算出摘要,但从摘要几乎无法反推出原始数据。同时,不同的数据产生的摘要几乎不可能相同,哪怕原始数据只改变一个字节,生成的摘要也会截然不同。
- 例如,对于一段文本“Hello World”,使用SHA - 256算法计算出的摘要为“65a8e27d8879283831b664bd8b7f0ad4c4e63a73a2d3931d71b7f050f9c214ab51”,若将文本改为“Hello World!”,重新计算的摘要则会完全不同。
- 数字签名:
- 发送方使用自己的私钥对生成的数字摘要进行加密,这个加密后的摘要就是数字签名。因为私钥只有发送方持有,其他人无法伪造这个签名。
- 接收方收到数据和数字签名后,使用发送方的公钥对数字签名进行解密,得到发送方生成的原始摘要。同时,接收方对收到的数据运用同样的哈希算法计算出一个摘要。
- 然后对比这两个摘要,如果相同,则说明数据在传输过程中没有被篡改,保证了数据的完整性。因为如果数据被篡改,重新计算出的摘要必然与发送方的原始摘要不同,从而数字签名验证不通过。
- 证书机制:
- HTTPS通信过程中,服务器会向客户端发送数字证书。证书由受信任的证书颁发机构(CA)颁发,其中包含了服务器的公钥以及CA对该公钥的数字签名等信息。
- 客户端收到证书后,会使用CA的根证书(客户端预先安装了一些受信任CA的根证书)来验证证书中CA的签名,确保证书是由可信的CA颁发的。
- 验证通过后,就可以信任证书中服务器的公钥,从而可以正确地对服务器发送的数字签名进行解密验证,保证数据完整性验证的可靠性。如果证书被篡改,签名验证就会失败,客户端会收到证书相关的错误提示,不会信任该服务器。