md5等验证正确,就能确定文件一定没被修改过吗

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了md5等验证正确,就能确定文件一定没被修改过吗相关的知识,希望对你有一定的参考价值。

md5/sha1/
crc32或(iso/crc)

这些验证码都正确,就能确定文件一定没被修改过吗??

会不会把文件修改了,在通过某个方法把这些值改成跟原来的(或官方的)一样呢!
我看到电驴里有人说 md5可以被修改

md5/sha1/
crc32或(iso/crc)

这些验证码都正确,就能确定文件一定没被修改过.

MD5值的确可以被仿制,但很难很难很难很难,你这辈子也遇不上,下辈子也遇不上。多个哈希值同时是不可能的。

总之就是一句话:不可能。
参考技术A 不可能 参考技术B MD5的全称是Message-Digest Algorithm 5,在90年代初由MIT的计算机科学实验室和RSA Data Security Inc发明,经MD2、MD3和MD4发展而来。
Message-Digest泛指字节串(Message)的Hash变换,就是把一个任意长度的字节串变换成一定长的大整数。请注意我使用了“字节串”而不是“字符串”这个词,是因为这种变换只与字节的值有关,与字符集或编码方式无关。
MD5将任意长度的“字节串”变换成一个128bit的大整数,并且它是一个不可逆的字符串变换算法,换句话说就是,即使你看到源程序和算法描述,也无法将一个MD5的值变换回原始的字符串,从数学原理上说,是因为原始的字符串有无穷多个,这有点象不存在反函数的数学函数。
MD5的典型应用是对一段Message(字节串)产生fingerprint(指纹),以防止被“篡改”。举个例子,你将一段话写在一个叫 readme.txt文件中,并对这个readme.txt产生一个MD5的值并记录在案,然后你可以传播这个文件给别人,别人如果修改了文件中的任何内容,你对这个文件重新计算MD5时就会发现(两个MD5值不相同)。如果再有一个第三方的认证机构,用MD5还可以防止文件作者的“抵赖”,这就是所谓的数字签名应用。
MD5还广泛用于加密和解密技术上,在很多操作系统中,用户的密码是以MD5值(或类似的其它算法)的方式保存的, 用户Login的时候,系统是把用户输入的密码计算成MD5值,然后再去和系统中保存的MD5值进行比较,而系统并不“知道”用户的密码是什么。
所以,只要MD5验证正确就可以确定没有被修改过!!

Java使用MD5验证文件一致性

       MD5现在是用来作为一种数字签名算法,即A向B发送数据m,为了让B确信数据是A送来的并且没有被篡改于是A就是用hash算法将数据散列一并发送给 B。B接收到文件以后也用相同的hash算法校验数据是否被修改。主要是防止数据被修改的。MD5值的重复就是所谓的碰撞。 

 

获取文件的MD5码

System.out.println(DigestUtils.md5Hex(new FileInputStream(new File("C:/ttt/new1328505655521"))));

 

 

获取字符串MD5码

System.out.println(DigestUtils.md5Hex(string));

 

 

linux 查看文件md5值命令

md5sum Dockerfile

 

 

上述测试引用的文件来源:  

commons-codec包可以从apache下载: http://commons.apache.org/codec/download_codec.cgi

 

以上是关于md5等验证正确,就能确定文件一定没被修改过吗的主要内容,如果未能解决你的问题,请参考以下文章

想刷机但是每个rom都有啥MD5验证,请问是啥?怎么用?

什么是MD5加密和解密?它(数值)和验证文件是不是一致性有什么区别?

md5是啥

MD5指纹(文件指纹验证)

Java使用MD5验证文件一致性

Java使用MD5验证文件一致性