博主辛苦了,我要打赏银两给博主,犒劳犒劳站长。
【摘要】md5 的全称是 Message-Digest Algorithm 5,指字节串的 hash 变换,可以把任意长度的字节串变换成长度一定的字符串。注意是字节串,不是字符串,因为这种变换只跟字节的值有关,与字符集或者编码方式没有关系。
MD5 是将任意长度的字节串转换成一个 128bit 的大整数,是一个不可逆的字符串变换算法。
具体算法是怎么实现的我也不清楚,我也不打算知道怎么实现的。本文要讲的就是 md5 能支持加密的原文的最大长度,经过我的测试发现 md5 具有如下几个特点【以下几点是百度百科上面所说的】:
1、压缩性:任意长度的数据,其算出的 MD5 值长度都是固定的。
2、容易计算:从原始数据计算出 MD5 值很容易。
3、抗修改性:对原始数据进行任何改动,哪怕只修改1个字节,所得到的 MD5 值都有很大区别。
4、强抗碰撞:已知原始数据和其 MD5 值,想找到一个具有相同 MD5 值的数据(即伪造数据)是非常困难的。
对于 md5 加密的字节串长度是任意的,我们用来做判断两个网页是否相同:
$url = 'http://www.baidu.com';
$str1 = file_get_contents($url);
$str1_md5 = md5($str1);
$str2 = file_get_contents($url);
$str2_md5 = md5($str2);
$str3 = file_get_contents($url);
$str3_md5 = md5($str3.' space ');
$str4 = file_get_contents($url);
$str4_md5 = md5($str4.' ');
var_dump($str1_md5);
var_dump($str2_md5);
var_dump($str3_md5);
var_dump($str4_md5);
执行的结果如下:
已经此特性,可以用来判断两个网页是否完全一致。【写本文的主要来源是因为在做 XSS 漏洞检测过程中,对所有注入点进行攻击,然后判断攻击后页面是否发生变化,若未发生变化则跳过二次遍历,以防降低效率】
版权归 马富天PHP博客 所有
本文标题:《被 md5() 算法加密的字符串所支持的最大长度》
本文链接地址:http://www.mafutian.net/21.html
转载请务必注明出处,小生将不胜感激,谢谢! 喜欢本文或觉得本文对您有帮助,请分享给您的朋友 ^_^
顶1
踩0
第 1 楼 520fanhao.com 2017-09-12 22:06:21 北京北京
评论审核未开启 |