首页 > 文件进行 MD5 加密 什么意思,做什么用

文件进行 MD5 加密 什么意思,做什么用

文件进行 MD5 加密 什么意思,做什么用

MD5不是加密文字什么的吗?文件进行 MD5 加密不理解


Message Digest 5 (MD5) 是消息摘要算法。简单点说就是给一串字符串算个唯一的指纹码。
只要字符串不同,指纹码就不同。
比如:一个图片1.jpg,使用md5_file算出一个指纹码。然后把1.jpg重命名为2.jpg,还是同一张图片,因此2.jpg的指纹码不会发生变化。这样在存储图片的时候就可以按照图片的MD5来避免重复存储(MD5写入数据库,已存在的MD5值对应的图片不再存储)

PS:MD5是单向加密算法。对文件MD5之后是不能反向解密出原文的。


md5的长度是32个16进制数,也就是一共有32^16次方种可能。
md5是不可逆的编码方式,不然就没人用zip压缩了,用md5压缩多爽,再大的文件都能压缩成一串数字。
md5暴力破解是可能的,据说宇宙中沙子的数量只有10^100次方,每粒沙子都用md5编码,必然会得到重复的数字,这样就可以反编码了。


最主要是用来校验文件的,例如一个a.txt,你对它进行md5,会得到一个字符串,此时你修改了a.txt中一个字母,那么这时生成出来的md5字符串与之前是不一样的。一般的软件下载网站都会提供软件和软件的检验和,下载完成后你可以进行一次校验,如果对不上,那么这个软件在下载过程损坏了,或者被篡改了。


MD5不是加密,这个要区分开来,这个只是计算文件的哈希值,因为不同文件哈希值不一样,所以有些文件被修改了,通过比对md5算出的值,就一目了然了。


文件进行MD5加密就是用来效验你下载后的文件和官方提供的文件是否一致,防止其他人篡改里面的内容,如果文件内容被篡改,那么MD5值就会不同,这样就知道了文件是否下载完整或者是否被篡改!!!谢谢采纳


MD5本身而言就是将任意长度的信息流散列然后生成定长的摘要过程,而MD5算法的散列性很好所以不同字节流最终散列生成的结果串不会相同,而同一个字节流却可以生成同一个MD5码.

但是如果加密的存在就是为了让指定范围的人解密来说,MD5不能算是加密.因为它生成的子串是不能返回为原字节流的.所以才叫摘要嘛---就想写了论文,然后可以得出摘要;但是只知道摘要你也不能获取论文一样.

作用呢,一般有:

  1. 确保完整性: 你将文件生成了MD5摘要,传输文件和MD5码给接收端,接收端接收文件后可以对文件生成MD5码然后与接收到的MD5码对比校验确保文件是完整的而且中途没有被修改.
  2. 确保有效性: 你发送文件过去后,可以要求接收端返回文件的MD5码,你可以将收到的MD5码和自己文件的MD5码校验,确保通信为有效;还有就是可以将文件存储起来,MD5码也存储在数据库,以便复查的时候确保文件是传输成功了的[也就是防止抵赖...]
    ...等等等等.

总之这个MD5只是用以校验和防止中途修改之类的存在.
至于实现嘛,一般编程语言都有实现了的.

主要是散列方法的不同.实现方法很多,不过我看楼主估计也就是想要生成这个就是了,提供一套方案给你吧:
先生成16位MD5码:为a, 然后生成32位为b,
则40位为: c= a[0-15] + b[24-31]+b[16-23]+b[24-31]
ps: 0-15就是下标为0到下标为15

pps:这也是比较常见的MD5 - 40了.至于完全自定义散列函数,实在是...略难

【热门文章】
【热门文章】