我的水平有限,本文如有任何不严谨和不妥之处,还望大家多指正:)
前几天,微软的Windows10 2004大版本更新RTM放到MSDN上,我也第一时间下载并分享给同事。由于单位不方便用迅雷,所以一开始我们都是拿百度网盘离线下载作为中转。
还没等我开始测试,同事Martin就告诉我:“两次分不同的源,通过百度云转存下来的,SHA1都没对上。然后从自己的服务器转存下来就好了。”
镜像来源信息如下:
Windows 10 (business edition), Version 2004 (x64) - DVD 电脑 (Chinese-Simplified)文件:cn_windows_10_business_editions_version_2004_x64_dvd_c59a4f91.iso大小:5.15GB
MD5:3C4DA086657215C8D2729259DB7EF7BD
SHA1:ED65CC6F3B4F90FDBDAB949BA6286708E8DCF0F1
SHA256:7D1644A5BC130D0E819791A6F950113E1E03948DF2376589CD0DB203A6F3A07B数据来源:https://next.itellyou.cn
磁力链(BT)链接magnet:?xt=urn:btih:8E49569FDE852E4F3CCB3D13EFB296B6B02D82A6
于是我也测试了一下,还真的有问题!
上图是2次经过百度网盘离线中转下载的,其中一个文件我改了名字,两次的校验码果然不同,MD5、SHA1、SHA256都和原始文件信息都对不上。
电脑
实测安装翻车就是正常了,我还试了用虚拟机把ISO挂为光盘的官方安装方法,中途也会报错。
接着,我在家里用迅雷直接下载了同一个磁力链,校验码和安装都是完全正常的。
哈希碰撞,还是“葫芦娃”?
是遇上小概率的Hash碰撞了吗?应该不是吧,因为那样的话,每次从百度网盘下载来应该是同一个文件。为了试图验证这点,我又拿下面这个做了测试:
Windows 10 (consumer edition), Version 2004 (x64) - DVD(Chinese-Simplified)文件:cn_windows_10_consumer_editions_version_2004_x64_dvd_0c2eefdb.iso大小:5.25GB
MD5:6BB51E57E7C2EC0C9DE7ABFFF8A9E7A6
SHA1:64940D6FBC0F24971349C8E03BE508285EA29722
SHA256:D3CCDD5FC634623F8FB19FDCF674CFF713DAD43A89FC1F1DBEF6D42ABA5AAA03数据来源:https://next.itellyou.cn
magnet:?xt=urn:btih:75C53FC59E677E355327E73E3296F8848F90A538&dn=cn_windows_10_consumer_editions_version_2004_x64_dvd_0c2eefdb.iso&xl=5634521088(这个链接看上去较长,其实前面那段就够用了)
虽然和前面那个镜像不同,但毕竟2个ISO里大部分文件是一样的
Win10 2004 Consumer版本经百度网盘离线中转下载也有问题,2个文件都遇上Hash/MD5碰撞了?会不会百度是对文件进行分段校验,然后其中一部分校验和冲突了呢?
这时我想起以前听朋友讲过的一个笑话:网盘上存着的小电影,变成葫芦娃了…(开个玩笑而已)
除了磁力链/BT,我又测试了网上看到的ed2k链接,以及用本地正确的文件上传。这里有一点小区别,百度网盘的ed2k离线下载和本地上传都是秒完成(因为之前有人传过),结果Win10 2004 Business镜像还是都有问题,校验码又变了。
不知是这ISO中哪个部分(文件)的特征,触发了该问题?我觉得应该不是人为故意的,或者恶作剧,似乎更像是程序算法导致?估计百度要想解决的话也不难。
最后还是建议大家养成好习惯。从网上下载重要数据,如有条件尽量进行校验确认,万一遇上隐性数据损坏,故障排查起来可能会比较痛苦。
注:本文只代表作者个人观点,与任何组织机构无关,如有错误和不足之处欢迎在留言中批评指正。进一步交流技术,可以加我的QQ/微信:490834312。如果您想在这个公众号上分享自己的技术干货,也欢迎联系我:)
尊重知识,转载时请保留全文。感谢您的阅读和支持!