复制文件后发现文件md5值变了,什么道理?
这种情况,的确也是我使用电脑8年来第一次遇到的,以前复制文件没有发现过错误,这次也是偶然机会发现丢包才去用md5校验的,当天晚上我从另外一台电脑(通过网线连接的)复制RAR和EXE文件过来,也出现解压失败和安装中断的现象,再复制一次就没问题了,我怀疑是当时200G这个硬盘有点问题,可是也查不出坏道。也就是说从200G硬盘复制数据到120G硬盘,部分文件MD5值发生改变,同时从另一台电脑复制数据到200G硬盘也发生部分文件MD5改变现象,关机半小时以后,复制同样文件没有问题,至今(大约2天了)还没再次重现过,不知道今后还会不会重现,查坏道都查不出(diskman查的),平时读写数据最快都在50M/S这样,不像有坏道,是200G硬盘问题还是120G硬盘问题,还是非硬盘问题?毕竟不可能每个文件都去校验MD5值,到发现RAR解压不了,已经晚了,有什么办法确诊和避免么?
再补充下,当时还有个很奇怪的现象,那个从另一台电脑通过网线复制过来的RAR文件,解压缩的时候提示CRC错误,解压失败,但是WINRAR有提供一个测试解压功能,测试过程又没问题,实际去解压提示说CRC错误,可见丢弃的是一个非常微小的数据包,否则测试解压肯定会提示有问题的。 展开
复制文件后文件md5值变了,是因为md5值是独一无二的“数字指纹”。每个文件都不会相同。
MD5码以512位分组来处理输入的信息,且每一分组又被划分为16个32位子分组,经过了一系列的处理后,算法的输出由四个32位分组组成,将这四个32位分组级联后将生成一个128位散列值。
使用 MD5算法就可以为任何文件(不管其大小、格式、数量)产生一个独一无二的“数字指纹”。文件的MD5 值的作用就在于对操作得到的文件用专门的软件(如 Windows MD5 check 等)做一次 MD5 校验,通过检查文件前后 MD5 值是否发生了改变,就可以知道源文件是否被改动。
扩展资料:
MD5信息摘要算法可以产生出一个128位(16字节)的散列值(hash value),用于确保信息传输完整一致。由美国密码学家罗纳德·李维斯特(Ronald Linn Rivest)设计,于1992年公开,用以取代MD4算法。这套算法的程序在 RFC 1321 标准中被加以规范。
1996年后该算法被证实存在弱点,可以被加以破解,对于需要高度安全性的数据,专家一般建议改用其他算法,如SHA-2。2004年,证实MD5算法无法防止碰撞(collision),因此不适用于安全性认证,如SSL公开密钥认证或是数字签名等用途。
一般硬盘复制,出现文件变化的情况还比较少见。我平时用U盘的时候倒见过好几次文件复制的时候和原版不一样,多是些劣质U盘。
文件大小完全一样,不能说明问题,出现文件变化并不只是增加或减少了几个字节,还更可能是中间某些字节的内容发生了变化。改变一个字节要比增加(或减少)一个字节容易很多。如果你编过二进制文件操作一类的程序就更能明白我说的道理。
视频文件出现某些数据丢失,还照样能播放这也是比较正常的。给你个简单的类比吧,图片文件,如果是BMP格式的话,它主体部分每三个字节代表一个像素的信息,要是某几个字节发生了改变,也就是说图片中几个像素值有失真,对整体效果是不影响的,肉眼根本看不出来。但是如果你复制的是RAR等带无损压缩或自校验的文件格式的话,就没那么幸运了。往往差错一个字节都不能正常打开。
通过数据线传输数据,差错一两个字节是在所难免的。或许你会问,那为什么在网络特别不好的情况下从互联网上下载东西的时候照样一字不差呢?那是因为网络传输(主要是TCP/IP)是带校验的(一般是CRC32算法,完全类似于MD5),凡是校验不通过数据包的就丢掉重新传。只不过这些,我们毫无察觉,都由网卡或操作系统完成了。
推荐于2016-10-09 · 知道合伙人数码行家
MD5是message-digest algorithm 5(信息-摘要算法)的缩写,被广泛用于加密和解密技术上,它可以说是文件的“数字指纹”。任何一个文件,无论是可执行程序、图像文件、临时文件或者其他任何类型的文件,也不管它体积多大,都有且只有一个独一无二的MD5信息值,并且如果这个文件被修改过,它的MD5值也将随之改变。
2015-03-10
需要准备好一批文件(比如50个左右),每个文件要有一定的大小(比如1GB以上)。