网络信息的完整性保障算法 MD5 和 SHA

大多数协议比如 TCP、UDP、IP 等都通过帧校验序列来判断协议数据单元在传输中是否出现比特错误,在安全性的考量中,还需要做到信息的完整性保障,即不被篡改,同时也要防止偶发的比特位错误,这一实现需要借助到加密散列函数
加密散列函数一般以需要传输的数据(消息)M 作为输入,然后输出 H 序列,H 也被称为这条消息的摘要或指纹 H(M)。H 具备如下特征:

  • 原像不可计算性:在给定某条消息的 H 的情况下,无法计算出 M;
  • 原像不相同性:给定 M1 M 1 H1 H 1 ,想要找出一条 M2 M 2 ,使得 H( M1 M 1 )==H( M2 M 2 ) 几乎是不可能的;
  • 抗碰撞行:找出 H( M1 M 1 )==H( M2 M 2 ),而 M1 M 1 != M2 M 2 的情况是几乎不可能的。

注: ==(等于),!=(不等于),H==H(M);

目前最通用的两个加密散列算法是 MD5(Message Digest Algorithm 5) 和 SHA-1(Secure Hash Algorithm 1),前者只能生成长度为 128 位的摘要,后者能生成长度为 160 位的摘要。SHA-2 可以生成长度分别为 224位、256位、384位、512位的摘要

MD5 目前已宣告可被破解,SHA-1 和 SHA-2 具有相似的潜在的脆弱性。

你可能感兴趣的:(后台,网络安全)