我做的网站用户密码是用MD5加密了的,但是我做到密码找回的时候,密码是找回了。但是就是加密了的二进制数。纳闷啊。。请问这个MD5加密的密码如何能还原成用户设置的本来密码?有高人的话尽快回个话,谢谢了先!

解决方案 »

  1.   

    如果还原的,网上所说的MD5解密都是对照他们自己数据库中已经存储MD5加密值和原文来进行的所谓的解密
    当需要修改密码时你可以覆盖掉这个密码或是设置一个默认值让用户及时的更改
      

  2.   

    http://www.cmd5.com/输入你的那串数字就行了,如果密码不是太变态,都可以出来的
      

  3.   

    他也提供http借口的,可以在程序里用,不过如果你提供这个功能,那还md5加密干嘛?
      

  4.   

    如果你自己有一个md5计算结果,你不可能使用 http://www.cmd5.com/ 这类骗人的东西“解密”。实际上,它首先哄骗你在它的网站上“加密”,没就是把原始数据先输入进去。然后,当你再输入刚刚计算出来的md5结果时,它直接拿出你刚刚输入的数据,说“看,我解密啦”。这是哄小孩的呀。既然你自己的程序中保存了原始信息,何来“解密”?直接查询一下md5结果对应的原始信息就可以了。
      

  5.   

    md5的散列效果非常好。你可以看看Login控件之类的,都内置了对密码强度进行一定的约束,例如要求必须是6位以上、同时又字母和数字。如果要求必须至少有一个汉字则强度更好。
      

  6.   

    对了,说一下我一直用于在计算密码的md5值的算法,我实际上要把用户输入的密码跟网站安装信息(例如授权号、用户单位名称和地址)拼在一起,然后把它再跟它自己字符串反转结果拼在一起,最后判断总长度是否大于100个字符,如果不足100个字符还要自己再反转一次字符串结果然后跟自己拼在一起,这样的得到结果再计算md5。其核心思想就是:不要用一个较短的字符串去计算散列值。如果用户仅仅输入了3个字符,你也要用一定的算法把它有规律地扩展成超过100个字符的一个长串再去计算md5。
    实际上,md5可以用于对重要的合同进行签名。然后将md5值以一种非常“昂贵”的方式进行真正的加密和传递,这样就能保证通讯过程中没人能随便改动合同中的一个字。要记住,使用md5来计算一个比较长一些的字符串,不要计算过短的字符串,否则会被别有用心的人利用。
      

  7.   

    MD5加密不可逆,如果要用找回密码的功能,最好用对称加密算法(DES),这个是可逆的。
      

  8.   

    密码很重要,希望在计算md5时最起码的这个“安全”要点成为每一个程序员上岗前的基本知识。把md5翻译为一种“加密”方法,这可能是中文翻译问题。实际上原文只是说要对信息保密,并没有说一定要解密。md5的特点就是不可逆运算。不论是给出一个字符串,还是给出一篇小说,你都可以把它们计算成两个比较短的md5结果,但是结果几乎不可能有重复、碰撞的,所以它可以很好地为一篇长篇文章进行“签字”来保证不会被人在不改变md5值得情况下改动内容。
      

  9.   

    实际上,如果你计算md5之前把待计算的字符串随便加上一段胡乱打入的写死的字符串,http://www.cmd5.com/ 的把戏就“破产”了。当然,如果这个补充字符串是像软件开发商信息、网站授权信息之类的有意义的字符串,看可以起到防止用户将数据库拿给其它非授权用户的系统中使用的目的等。我这样说的目的。就是希望楼主了解,如果你使用了md5方法就要遵循他的初衷来设计你的程序。没有可能解密之类的。但是你可以把用户曾经输入过得密码及其md5值写入自己的数据库,这样根据md5值就能反向查处原始密码,正如2楼所说的,这叫做数据库查询而不是解密。用户输入的密码不能直接作为md5处理对象,还应该将其人为扩展成一个较长的字符串,这样别有用心的人就无法用你的漏洞来做出一个攻击你的系统的代码反过来要挟你。