之前讲了身份认证和数据加解密,身份认证可以保证数据源没有问题,数据加解密可以保证数据被窃听者获取也能防止窃听者知道数据的内容,要做到数据的安全传输,还需要确定收到的数据没有经过窃听者的篡改,这就涉及到数据的完整性校验。

哈希

 
    在网络数据完整性校验中使用的哈希算法通常包括:MD5, SHA。

数据完整性校验

 
    有人可能会想,常用的哈希算法就几类,假设窃听者截获了数据,修改了数据区的某些字节,然后再用哈希算法进行再一次哈希得到新的哈希值,放入数据包中哈希值的位置传给接收者,接收者收到之后,对数据进行哈希,得到的哈希值就是窃听者发过来的那个哈希值。从而窃听者实现了虽然没有获取信息,但是破坏了信息的目的。这就是为什么需要在哈希的时候使用密钥:通信双方进行身份认证之后,交换密钥,包括对称性加密的密钥,哈希算法的密钥,还有其他.... 在哈希的时候用上哈希密钥,而窃听者没有哈希的密钥,因此他最后伪造的哈希值是无法通过检验的。