md5值是什么,有什么用?

md5值是什么,有什么用?,第1张

md5是个散列函数,任何数据经过md5将生成一个16位的值或32位的值〔md5的版本不同造成位数不同〕。

md5有两个重要的性质,第一是无法逆推,只有md5生成的值是无法逆推出原有数据的。第二是原数据只要有一点改动,md5值就会有很大变动。

这两个性质决定了md5有很多用途。第一个性质在密码领域大有用途,我们如果把qq密码丢了,用密保找回,这是腾讯肯定不会给你原密码的,而是让输入新密码,这是因为你的原密码在存入数据库前,经过了md5〔也可能是其他散列函数,散列函数都有这性质,只不过md5是最出名的〕处理,这时谁都无法知道原密码,即使数据库数据泄漏,别人也无法知道原密码,而当你输入原密码登录时,密码就用原来的方法处理一下,与数据库里的加密密码对比,想同就允许登录。这个只能改密码不能获取新密码的情况在其他密码的应用比比皆是,银行也是一个。

第二个用途楼上也说了,就是检验,文件检验也是种应用,不过这只是简单的应用,一般我们去ATM机取款,ATM机会把我们的取款金额加密传输到服务器,可是中途出现问题数据被改了怎么办,这时就可以用MD5检验啦,如果检验没问题,只要保证线路没问题,那么所传的数据就是没问题的,不然就是传输出问题的,钱可是个敏感的东西,银行的东西可不能出现一丝差错,所以银行的数据都是经过层层检验的。

MD5是一种不可逆的加密(散列)算法,只能加密,不能还原。

MD5用同一值加密的结果每次都一样,所以可以将用户的密码的MD5结果保存在数据库中。当用户登录时,将登陆时的密码MD5之后和数据库中的进行比对,如果相同就证明用户输入的密码正确。

MD5的值是可以碰撞的(两个不同值的MD5结果相同),但几率非常小。

不过好象有人已经发现了快速发现碰撞的方法,MD5已经不是牢不可破,不过尚未公开。

目前MD5破解的方法都是将很多字符穷举将其MD5值保存在一个大型数据库中,查找是依次比对。

防止自己的MD5值被穷举出来可以通过使用长且复杂的密码或者进行多次MD5

MD5解密方法\x0d\x0a我在存储数据库的时候,通过md5加密方法将字段进行加密,当我在读取该字段时如何正确的读取原来的值啊\x0d\x0a------解决方案--------------------\x0d\x0a没办法,MD5是不可逆的。\x0d\x0a你需要使用可逆加密算法。\x0d\x0a------解决方案--------------------\x0d\x0a插入表中的时候md5加密\x0d\x0a比如:\x0d\x0a$sql= "insert into register(names,pswd,repswd) values( '$_POST[names] ',md5( '$_POST[pswd] '),md5( '$_POST[repswd] ')) "\x0d\x0a$qid=mysql_query($sql)\x0d\x0a读取的时候\x0d\x0a$pswd=empty($_POST[ 'pswd '])? ' ':md5($_POST[ 'pswd '])\x0d\x0a------解决方案--------------------\x0d\x0a如果业务要求可还原,那么不要采用MD5,请使用可逆加密算法,如DES加密。\x0d\x0aMD5为不可逆散列算法,可用于存储用户密码,存储后不需要永远不需要知道明文。密码比较时只需将用户输入的密码再次转成MD5码与存储的相比较即可得知用户输入密码是否正确。\x0d\x0alinux/unix *** 作系统一般采用MD5进行用户密码加密。\x0d\x0a------解决方案--------------------\x0d\x0aMD5目前所谓的破解只是采用碰撞法找到了对等因子。\x0d\x0a比如:string1的MD5码为MD1,而现在我们做到的只是又找到了一个string2,它的MD5码也是MD1。\x0d\x0a结果就是:用户登陆某采用MD5加密的系统时,本来密码是12345,现在可能用abcde也能登陆。\x0d\x0a想想可能还原吗?如果可以还原,那天大的信息也能用32位长的字符串表示了,这不成了超级压缩算法了吗,整个宇宙的信息都可以用32位长表示了。不可逆的!


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9994149.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-04
下一篇 2023-05-04

发表评论

登录后才能评论

评论列表(0条)

保存