相同MD5值的三个不同字符串

相同MD5值的三个不同字符串

这里记录一下,今天做题时遇见的,百度上都没找到,,,
花费了我大把时间,避免以后走弯路
题目:
在这里插入图片描述
在这里插入图片描述
如图所示,绕过上述代码!!!!

<?php

$s1 = "%af%13%76%70%82%a0%a6%58%cb%3e%23%38%c4%c6%db%8b%60%2c%bb%90%68%a0%2d%e9%47%aa%78%49%6e%0a%c0%c0%31%d3%fb%cb%82%25%92%0d%cf%61%67%64%e8%cd%7d%47%ba%0e%5d%1b%9c%1c%5c%cd%07%2d%f7%a8%2d%1d%bc%5e%2c%06%46%3a%0f%2d%4b%e9%20%1d%29%66%a4%e1%8b%7d%0c%f5%ef%97%b6%ee%48%dd%0e%09%aa%e5%4d%6a%5d%6d%75%77%72%cf%47%16%a2%06%72%71%c9%a1%8f%00%f6%9d%ee%54%27%71%be%c8%c3%8f%93%e3%52%73%73%53%a0%5f%69%ef%c3%3b%ea%ee%70%71%ae%2a%21%c8%44%d7%22%87%9f%be%79%6d%c4%61%a4%08%57%02%82%2a%ef%36%95%da%ee%13%bc%fb%7e%a3%59%45%ef%25%67%3c%e0%27%69%2b%95%77%b8%cd%dc%4f%de%73%24%e8%ab%66%74%d2%8c%68%06%80%0c%dd%74%ae%31%05%d1%15%7d%c4%5e%bc%0b%0f%21%23%a4%96%7c%17%12%d1%2b%b3%10%b7%37%60%68%d7%cb%35%5a%54%97%08%0d%54%78%49%d0%93%c3%b3%fd%1f%0b%35%11%9d%96%1d%ba%64%e0%86%ad%ef%52%98%2d%84%12%77%bb%ab%e8%64%da%a3%65%55%5d%d5%76%55%57%46%6c%89%c9%df%b2%3c%85%97%1e%f6%38%66%c9%17%22%e7%ea%c9%f5%d2%e0%14%d8%35%4f%0a%5c%34%d3%73%a5%98%f7%66%72%aa%43%e3%bd%a2%cd%62%fd%69%1d%34%30%57%52%ab%41%b1%91%65%f2%30%7f%cf%c6%a1%8c%fb%dc%c4%8f%61%a5%93%40%1a%13%d1%09%c5%e0%f7%87%5f%48%e7%d7%b3%62%04%a7%c4%cb%fd%f4%ff%cf%3b%74%28%1c%96%8e%09%73%3a%9b%a6%2f%ed%b7%99%d5%b9%05%39%95%ab";
$s2 = "%af%13%76%70%82%a0%a6%58%cb%3e%23%38%c4%c6%db%8b%60%2c%bb%90%68%a0%2d%e9%47%aa%78%49%6e%0a%c0%c0%31%d3%fb%cb%82%25%92%0d%cf%61%67%64%e8%cd%7d%47%ba%0e%5d%1b%9c%1c%5c%cd%07%2d%f7%a8%2d%1d%bc%5e%2c%06%46%3a%0f%2d%4b%e9%20%1d%29%66%a4%e1%8b%7d%0c%f5%ef%97%b6%ee%48%dd%0e%09%aa%e5%4d%6a%5d%6d%75%77%72%cf%47%16%a2%06%72%71%c9%a1%8f%00%f6%9d%ee%54%27%71%be%c8%c3%8f%93%e3%52%73%73%53%a0%5f%69%ef%c3%3b%ea%ee%70%71%ae%2a%21%c8%44%d7%22%87%9f%be%79%6d%c4%61%a4%08%57%02%82%2a%ef%36%95%da%ee%13%bc%fb%7e%a3%59%45%ef%25%67%3c%e0%27%69%2b%95%77%b8%cd%dc%4f%de%73%24%e8%ab%66%74%d2%8c%68%06%80%0c%dd%74%ae%31%05%d1%15%7d%c4%5e%bc%0b%0f%21%23%a4%96%7c%17%12%d1%2b%b3%10%b7%37%60%68%d7%cb%35%5a%54%97%08%0d%54%78%49%d0%93%c3%b3%fd%1f%0b%35%11%9d%96%1d%ba%64%e0%86%ad%ef%52%98%2d%84%12%77%bb%ab%e8%64%da%a3%65%55%5d%d5%76%55%57%46%6c%89%c9%5f%b2%3c%85%97%1e%f6%38%66%c9%17%22%e7%ea%c9%f5%d2%e0%14%d8%35%4f%0a%5c%34%d3%f3%a5%98%f7%66%72%aa%43%e3%bd%a2%cd%62%fd%e9%1d%34%30%57%52%ab%41%b1%91%65%f2%30%7f%cf%c6%a1%8c%fb%dc%c4%8f%61%a5%13%40%1a%13%d1%09%c5%e0%f7%87%5f%48%e7%d7%b3%62%04%a7%c4%cb%fd%f4%ff%cf%3b%74%a8%1b%96%8e%09%73%3a%9b%a6%2f%ed%b7%99%d5%39%05%39%95%ab";
$s3 = "%af%13%76%70%82%a0%a6%58%cb%3e%23%38%c4%c6%db%8b%60%2c%bb%90%68%a0%2d%e9%47%aa%78%49%6e%0a%c0%c0%31%d3%fb%cb%82%25%92%0d%cf%61%67%64%e8%cd%7d%47%ba%0e%5d%1b%9c%1c%5c%cd%07%2d%f7%a8%2d%1d%bc%5e%2c%06%46%3a%0f%2d%4b%e9%20%1d%29%66%a4%e1%8b%7d%0c%f5%ef%97%b6%ee%48%dd%0e%09%aa%e5%4d%6a%5d%6d%75%77%72%cf%47%16%a2%06%72%71%c9%a1%8f%00%f6%9d%ee%54%27%71%be%c8%c3%8f%93%e3%52%73%73%53%a0%5f%69%ef%c3%3b%ea%ee%70%71%ae%2a%21%c8%44%d7%22%87%9f%be%79%ed%c4%61%a4%08%57%02%82%2a%ef%36%95%da%ee%13%bc%fb%7e%a3%59%45%ef%25%67%3c%e0%a7%69%2b%95%77%b8%cd%dc%4f%de%73%24%e8%ab%e6%74%d2%8c%68%06%80%0c%dd%74%ae%31%05%d1%15%7d%c4%5e%bc%0b%0f%21%23%a4%16%7c%17%12%d1%2b%b3%10%b7%37%60%68%d7%cb%35%5a%54%97%08%0d%54%78%49%d0%93%c3%33%fd%1f%0b%35%11%9d%96%1d%ba%64%e0%86%ad%6f%52%98%2d%84%12%77%bb%ab%e8%64%da%a3%65%55%5d%d5%76%55%57%46%6c%89%c9%df%b2%3c%85%97%1e%f6%38%66%c9%17%22%e7%ea%c9%f5%d2%e0%14%d8%35%4f%0a%5c%34%d3%73%a5%98%f7%66%72%aa%43%e3%bd%a2%cd%62%fd%69%1d%34%30%57%52%ab%41%b1%91%65%f2%30%7f%cf%c6%a1%8c%fb%dc%c4%8f%61%a5%93%40%1a%13%d1%09%c5%e0%f7%87%5f%48%e7%d7%b3%62%04%a7%c4%cb%fd%f4%ff%cf%3b%74%28%1c%96%8e%09%73%3a%9b%a6%2f%ed%b7%99%d5%b9%05%39%95%ab";
var_dump(md5(urldecode($s1)));
var_dump(md5(urldecode($s2)));
var_dump(md5(urldecode($s3)));

运行结果:

string(32) "ea8b4156874b91a4ef00c5ca3e4a4a34"
string(32) "ea8b4156874b91a4ef00c5ca3e4a4a34"
string(32) "ea8b4156874b91a4ef00c5ca3e4a4a34"

附上一个5位数和一个6位数的0e开头md5全数字的值:

byGcY
0e591948146966052067035298880982
sonZ7y
0e463306343746311593316642162425

只包含一种字符的0e开头的md5值:

1FVWc
0ef715f5943144181839f9f321584156
2uM8z
0e0081018231f666742748f3540f4761
3za1b
0e02f196724391824188f3f90f732735

只包含两种字符的0e开头的md5值:

00c84
0e17d931d17f1948d37d691693995ff1
01bDI
0ee26113820055502806791698800f47
01NxP
0e72096d884f956d9618012679405269
02K7w
0e543091322e0f42ef1126374409f755
04072
0e8f06d06387944ff396030861fd2698
044Dt
0e91946379408e6f2f62152293e4f596
05nnu
0ef580f7a2f4176f57544f8091f33936
05wPJ
0e49528768d18f101816843669079475
  • 12
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 13
    评论
MD5是目前最热门的加密算法,我们通常用MD5来验证文件的完整性。例如在一些比较正规的下载网站,通常会提供软件的MD5,这样我们就可以对下载回来的文件用MD5校检软件(如HashX等)做一次MD5校验,以确保我们获得的文件与该站点提供的文件为同一文件。但当两个不同文件的MD5完全一样时,你还会信任MD5吗? 找出破解MD5加密方法的专家是我国山东大学的王小云教授,这则新闻在以前的软件版块曾详细报道过。但之后MD5的破解一直没有进展,直到最近,国外的科学家研究出了新的MD5碰撞破解方法,可以让两个不同文件的MD5完全一样,而之前我们一直认为一个文件的MD5在世界上是独一无二的,这就像一个人克隆了你的指纹然后冒充你一样恐怖! 为了验证MD5的独一无二性,我们来做一个简单的试验: 在桌面上新建一个文本文档,文件名为“test.txt”,内容为“OfficeBa”。然后将这个文本文档拖动到校验工具HashX中,点击左上角的“Hash File”按钮,得到其MD5为051cb2917a5b70505e1687dee449c765,然后为文档中的“OfficeBa”加上双引号,保存后再通过HashX进行校检,发现MD5变成了9ab117400993b70bc9945a9b15749d5d了。可见,一个极细微的变动都会导致文件的MD5不同! 那么我们能让两个程序文件的MD5一致,却又都能正常运行,并且可以做完全不同的事情么?答案是:“可以!”。要让两个不同文件的MD5相同,可以通过一款名为fastcoll的小工具来完成我们同样以刚才的test.txt来做试验: -h [--help] 显示选项 -q [--quiet] 简化 -i [-ihv] arg 使用指定的初始,默认是md5初始 -p [-prefixfile] arg 使用给定的前缀计算初始,仍然把数据复制到输出文件中(必须是个文件名) -o [--out] arg 指定输出文件名,此选项必须是最后一个参数,而且两个文件名必须同时指定 默认的是 -o msg1.bin msg2.bin 把解压出来的fastcoll_v1.0.0.5.exe与test.txt放在同一目录,然后在“命令提示符”中输入:“fastcoll_v1.0.0.5.exe -i test.txt -p test.txt -o cbi.exe cbi2.exe”并回车,在同目录中会生成名为cbi.exe和cbi2.exe文件,我们用HashX校验他们的MD5,可以发现是完全一样的,但是在HashX中用“SHA-1”加密算法进行校验的时候,结果竟然是不同的(SHA-1加密算法生成的结果也是独一无二的)!可见这已经是完全不同的两个文件,但是他们的MD5竟然完全相同。 如果黑客从网上下载一个工具,给其捆绑上木马,然后通过工具让其MD5和原文件一样。那么当用户下载了文件后用MD5校验工具进行校验时就会发现带毒文件和原文件MD5完全一样,就会放心地去运行,结果可想而知。所以,MD5加密已经不再可信!
一劳永逸MD5校验工具软件以及MD5如何校验的方法打包下载: 在一些特殊的情况下,我们会需要校验下载下来的软件的MD5,尤其是使用P2P软件下载软件所下载的东西,更需要验证一下,以防下载过程中出现了意外,导致整个文件无效。下载MD5校验工具软件,安装之后,再计算出MD5,再和发布者提供的原始MD5进行比较,就可以判断出下载东东是否和原始的一摸一样了。但是,使用MD5校验工具软件进行MD5校对比较麻烦,而来也是不太经常用这样的工具。其实,仅仅利用一个DLL动态链接库文件,就可以完成MD5校验的工作了。 首先安装MD5校验工具:HashTab32.dll 譬如C:\md5;接着再运行窗口输入regsvr32 /s C:\md5\hashtab32.dll并回车,完成动态HashTab32.dll文件的注册。regsvr32 /s C:\WINDOWS\system32\hashtab32.dll如何校验MD5 至此,我们已经完成了MD5校验工具的安装,一劳永逸的安装。我们以后再也不需要启动任何的MD5校验工具软件了。右键点击需要校验MD5的文件,便选择属性,在文件属性对话框中,已经多了一个标签:文件哈希! 在界面的空白处,点击鼠标右键出现设置菜单,左键点击设置之后,出来如下的窗口: 再这个设置窗口里,我们可以根据发布者提供的哈希选择所需要的哈希算法,常见的当然就是MD5啦,这里,把MD5勾选,然后,点击确定按钮就可以本地文件的MD5了。 那怎么校验本地文件的MD5与发布者的MD5一样呢?很简单,看到上图绿色的勾勾了吗?将发布者的MD5黏贴进后面的框框里,如果MD5一样,则出现绿色的勾勾,表示MD5是一样的,如果出现的是红色叉叉,那么MD5不一样咯,说明本地文件与发布者发布的文件是不一样的。
JavaScript中的MD5算法可以用来生成字符串MD5哈希。根据引用[1]的内容,可以通过不同的方法来获取MD5哈希。 第一种方法是使用`md5`函数,该函数在引用[1]中的示例代码中被调用。通过传递一个空的`Uint8Array`作为参数,可以得到一个空字符串MD5哈希。具体代码如下: ```javascript md5(new Uint8Array([])); // d41d8cd98f00b204e9800998ecf8427e ``` 第二种方法是使用`md5.hex`函数,该函数接受一个字符串作为参数,并返回该字符串MD5哈希。通过传递空字符串作为参数,可以得到一个空字符串MD5哈希。具体代码如下: ```javascript md5.hex(''); // d41d8cd98f00b204e9800998ecf8427e ``` 第三种方法是使用`md5.array`函数,该函数接受一个字符串作为参数,并返回一个包含MD5哈希的数组。通过传递空字符串作为参数,可以得到一个包含空字符串MD5哈希的数组。具体代码如下: ```javascript md5.array(''); // [212, ...] ``` 总结来说,以上三种方法都可以用来获取空字符串MD5哈希。需要注意的是,不同的方法返回的结果形式可能会有所不同,但实际的MD5哈希都是相同的。 另外,引用提供了第二种方法,即通过引入外部文件来使用MD5算法。该方法使用`<script>`标签将`md5.js`文件引入到页面中,然后可以使用其中定义的函数来计算MD5哈希。 希望以上内容能够解答您的问题。如果还有其他疑问,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值