保证数据的完整性
到目前为止,我们后续的报文可以加密通信了。现在只要保证,后续加密的数据不被篡改就行了,或者说,SSL需要辨别数据是否被篡改的能力。
这时候摘要就派上用场了。回顾第三章中,我们提到的摘要的特性:
1:不同的数据,即使是一字节改变,其摘要的结果变化非常大。
2:无论摘要的输入长度是多少,其输出是固定长度,对于MD5而言输出16字节,对于SHA1而言,输出20字节。
3:无法从摘要的结果中得出原文。只有输入相同的明文数据经过相同的摘要算法才能得到相同的结果。
为了达到能够辨别数据被修改的能力,我们这加密:
好了,假设密文中某一字节被改变,那么接受者收到报文解密后,必定要么明文部分是错误的,不是”GET …”,要么摘要部分是错误的。此时接受者只要对明文做一次摘要,然后拿自己的结果和收到的摘要比较一下是否相同,就能判断数据是否被改动过。过程如下:
上述加密过程屏蔽了padding相关操作,但并不影响理解如何保证数据完整性。
---------------------
作者:Mrpre
来源:CSDN
原文:https://blog.csdn.net/mrpre/article/details/77867008
版权声明:本文为博主原创文章,转载请附上博文链接!