03.07 文件没移动,md5值却变了,可能是什么原因?

妞爸_Shanghai


MD5信息摘要算法(英语:MD5 Message-Digest Algorithm),一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value),用于确保信息传输完整一致。



他被用于对一个文件的计算摘要信息,来确保你得到的文件是原始的没有被修改过得文件,通常它是一长串字符!对于不同的文件内容(不是文件名)这个长串字符是不同的!这样就可以对比给出的结果和你计算出的结果是否一致,一致就是原来的文件,不一致就说明被人改动过,MD5就像是人类的指纹一样!指纹不同当然就不是原来的人!


互联网上下载的文件普遍都会提供MD5值,下载以后通过MD5计算工具来和给出的字符对比。如果不一致那么就代表不是作者原来的文件!移动并不会改变MD5的计算结果!


风来了156


可能原因有三

1 位翻转。由于宇宙射线,环境磁暴,电磁干扰等原因,硬盘上的某个位发生变化。这个位又恰好处于文件存储位置。结果就导致文件损坏。这种情况导致的文件损坏是非常常见的。几乎每周都会遇到一次。但是由于大多数情况下,位翻转都不在关键文件位置上,所以一般人感觉不到影响。而且大多数受到位翻转影响的文件也能正常打开。

2 磁道衰减。由于磁盘属于磁性原件,存在自然衰减的情况。并且由于制造工艺不可能保证所有磁道衰减一直。就会存在衰减过快的情况。结果就导致文件部分发生变化。这个也很难遇到。毕竟现在工艺比以前好的多,即使衰减速度不一致,也非常慢。可能你放置几年才会遇到。对于SSD也存在由于栅极工艺导致电平衰减的情况。

3 坏道。硬盘坏道太常见了。即使你没发生碰撞,没写过这个位置。但是就是不知道咋的就坏道了。毕竟存在机械动件。而对于SSD。也不是高枕无忧,坏位有时候就是在不经意间发生的。

2和3的情况其实可以算一种。

4 病毒。这个就没啥好说的了,病毒改写了文件把自己藏在里面以便继续传播。

相对来说,第四种情况是最好解决也最容易遇到的。只要你使用习惯好,有杀毒软件。基本可以避免。即使遇到了,一个好点的杀毒软件也能将病毒剥离出来并还原你得文件。

第二三种情况,不常遇到,也好处理。不要用太次的磁盘。机械硬盘避免碰撞和意外掉电,不要用瓦叠技术的磁盘。SSD用大品牌的。基本可以避免。另外多做备份,真是出现损坏一般文件都打不开用不了了,还原备份即可。而且大部分操作系统都能处理这种故障。

第一种情况,那真是。一般发生这种情况,文件大部分还能正常打开。但是就是文件内部发生了改变。对于常人来说观察不到,对于操作系统来说检测不到。一般的文件系统都不能发现这种故障,更别说修复了。对于操作系统可能就是变得有些卡,但又不会崩溃。对于文本,就是变了一个字符。对于照片,可能就变了某个像素的颜色。最严重也就图片链表丢失只显示一半啥的。音频出现一个刺音。视频丢了一帧。

好在这种问题对于大多数人来说无所谓。系统文件损坏重装系统就是了,照片坏了不要,音频视频凑合着也能听能看。

但要解决这个问题。那就超麻烦了。现在唯一能有效解决这个问题的成熟方案是使用ZFS文件系统。这个文件系统只能在BSD操作系统下完美工作。Ubuntu想要引入喊了快十年了,也只是实验阶段。苹果喊了几年后放弃了。所以到目前这个东西也只在大型商业公司和少部分玩家手中使用。其次,linux抄其技术搞了Btrfs个,Windows也抄其技术搞了Refs个。但是这两个都不成熟,存在各种或大或小的BUG。估计要起完美运行还要五到十年时间。到那时候ZFS就25岁了。其升级版OpenZFS也该成熟了。


leang789


这就是 btrfs 文件系统里面提到的,他可以检测出静默文件损坏的重要性。

简单的说,你存储的文件的硬盘存储区,某(多)个位在0和1之间发生了翻转。造成这个原因可能是硬盘自身缺陷(如老化,数据线接触不良误码高),也可能是诸如WinHEX这样的16进制编辑器,绕开文件系统,直接修改硬盘扇区,改变了这个文件的存储扇区。又或者是系统写硬盘扇区时崩溃死机 导致文件不完整。

这样的事情总会发生,只要硬盘在读盘时没有报错,那么用户是不会发现读到的文件与当初保存的文件已经不同了。目前来说,只有带有check sum的文件系统才能揪出这样的问题,例如 btrfs 等。而NTFS是不行的。


zhangjint5


综合可能是移动硬盘供电不足、USB连接线、USB接口氧化、内存条出现问题等也会出现这种问题。


MD5的全称是Message-Digest Algorithm 5,在90年代初由MIT的计算机科学实验室和RSA Data Security Inc 发明,由 MD2/MD3/MD4 发展而来的。MD5的实际应用是对一段Message(字节串)产生fingerprint(指纹),可以防止被“篡改”。

举个例子,从某网站提供下载的MD5校验值软件WinMD5.zip,其MD5值是1e07ab3591d25583eff5129293dc98d2,但你下载该软件后计算MD5发现其值却是81395f50b94bb4891a4ce4ffb6ccf64b,那说明该ZIP已经被他人修改过,那还用不用该软件那你可自己琢磨着看啦。
MD5广泛用于加密和解密技术上,在很多操作系统中,用户的密码是以MD5值(或类似的其它算法)的方式保存的,用户Login的时候,系统是把用户输入的密码计算成MD5值,然后再去和系统中保存的MD5值进行比较,来验证该用户的合法性。

所以从原理上,文件没有改动,MD5肯定是不会变的。但实际生活中,copy到移动硬盘、下载大文件,偶尔会出现变动。 综合可能是供电不足、USB连接线、USB接口氧化、内存条出现问题等也会出现这种问题。


分享到:


相關文章: