被 md5() 算法加密的字符串所支持的最大长度

学习笔记 马富天 2017-09-11 19:44:43 63 1

【摘要】md5 的全称是 Message-Digest Algorithm 5,指字节串的 hash 变换,可以把任意长度的字节串变换成长度一定的字符串。注意是字节串,不是字符串,因为这种变换只跟字节的值有关,与字符集或者编码方式没有关系。

MD5 是将任意长度的字节串转换成一个 128bit 的大整数,是一个不可逆的字符串变换算法。

具体算法是怎么实现的我也不清楚,我也不打算知道怎么实现的。本文要讲的就是 md5 能支持加密的原文的最大长度,经过我的测试发现 md5 具有如下几个特点【以下几点是百度百科上面所说的】:

1、压缩性:任意长度的数据,其算出的 MD5 值长度都是固定的。

2、容易计算:从原始数据计算出 MD5 值很容易。

3、抗修改性:对原始数据进行任何改动,哪怕只修改1个字节,所得到的 MD5 值都有很大区别。

4、强抗碰撞:已知原始数据和其 MD5 值,想找到一个具有相同 MD5 值的数据(即伪造数据)是非常困难的。

对于 md5 加密的字节串长度是任意的,我们用来做判断两个网页是否相同:

  1. $url = 'http://www.baidu.com';
  2. $str1 = file_get_contents($url);
  3. $str1_md5 = md5($str1);
  4. $str2 = file_get_contents($url);
  5. $str2_md5 = md5($str2);
  6. $str3 = file_get_contents($url);
  7. $str3_md5 = md5($str3.' space ');
  8. $str4 = file_get_contents($url);
  9. $str4_md5 = md5($str4.' ');
  10. var_dump($str1_md5);
  11. var_dump($str2_md5);
  12. var_dump($str3_md5);
  13. var_dump($str4_md5);

执行的结果如下:

请输入图片名称

已经此特性,可以用来判断两个网页是否完全一致。【写本文的主要来源是因为在做 XSS 漏洞检测过程中,对所有注入点进行攻击,然后判断攻击后页面是否发生变化,若未发生变化则跳过二次遍历,以防降低效率】

版权归 马富天PHP博客 所有

本文标题:《被 md5() 算法加密的字符串所支持的最大长度》

本文链接地址:http://www.mafutian.net/21.html

转载请务必注明出处,小生将不胜感激,谢谢! 喜欢本文或觉得本文对您有帮助,请分享给您的朋友 ^_^

1

0

上一篇《 如何让背景图片铺满屏幕 》 下一篇《 Jquery实现返回顶部,并且缓慢移动到顶部 》
分享到:

所有评论

  1. 首页
  2. 上一页
  3. 1
  4. 下一页
  5. 尾页
  6. 第1页
  7. 每页12条
  8. 共1页
  9. 共1条
评论审核未开启
表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情
验证码