MD5还原的问题!

rainco 2008-11-30 08:12:42
我做的网站用户密码是用MD5加密了的,但是我做到密码找回的时候,密码是找回了。但是就是加密了的二进制数。纳闷啊。。请问这个MD5加密的密码如何能还原成用户设置的本来密码?有高人的话尽快回个话,谢谢了先!
...全文
1212 16 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
密码很重要,希望在计算md5时最起码的这个“安全”要点成为每一个程序员上岗前的基本知识。

把md5翻译为一种“加密”方法,这可能是中文翻译问题。实际上原文只是说要对信息保密,并没有说一定要解密。md5的特点就是不可逆运算。不论是给出一个字符串,还是给出一篇小说,你都可以把它们计算成两个比较短的md5结果,但是结果几乎不可能有重复、碰撞的,所以它可以很好地为一篇长篇文章进行“签字”来保证不会被人在不改变md5值得情况下改动内容。
jinsuo_1986 2008-11-30
  • 打赏
  • 举报
回复
MD5加密不可逆,如果要用找回密码的功能,最好用对称加密算法(DES),这个是可逆的。
  • 打赏
  • 举报
回复
对了,说一下我一直用于在计算密码的md5值的算法,我实际上要把用户输入的密码跟网站安装信息(例如授权号、用户单位名称和地址)拼在一起,然后把它再跟它自己字符串反转结果拼在一起,最后判断总长度是否大于100个字符,如果不足100个字符还要自己再反转一次字符串结果然后跟自己拼在一起,这样的得到结果再计算md5。

其核心思想就是:不要用一个较短的字符串去计算散列值。

如果用户仅仅输入了3个字符,你也要用一定的算法把它有规律地扩展成超过100个字符的一个长串再去计算md5。


实际上,md5可以用于对重要的合同进行签名。然后将md5值以一种非常“昂贵”的方式进行真正的加密和传递,这样就能保证通讯过程中没人能随便改动合同中的一个字。

要记住,使用md5来计算一个比较长一些的字符串,不要计算过短的字符串,否则会被别有用心的人利用。
风骑士之怒 2008-11-30
  • 打赏
  • 举报
回复
单向加密
zhu371816210 2008-11-30
  • 打赏
  • 举报
回复
md5 不能逆
  • 打赏
  • 举报
回复
md5的散列效果非常好。你可以看看Login控件之类的,都内置了对密码强度进行一定的约束,例如要求必须是6位以上、同时又字母和数字。如果要求必须至少有一个汉字则强度更好。
  • 打赏
  • 举报
回复
如果你自己有一个md5计算结果,你不可能使用 http://www.cmd5.com/ 这类骗人的东西“解密”。实际上,它首先哄骗你在它的网站上“加密”,没就是把原始数据先输入进去。然后,当你再输入刚刚计算出来的md5结果时,它直接拿出你刚刚输入的数据,说“看,我解密啦”。这是哄小孩的呀。既然你自己的程序中保存了原始信息,何来“解密”?直接查询一下md5结果对应的原始信息就可以了。
hztltgg 2008-11-30
  • 打赏
  • 举报
回复
他也提供http借口的,可以在程序里用,不过如果你提供这个功能,那还md5加密干嘛?
hztltgg 2008-11-30
  • 打赏
  • 举报
回复
http://www.cmd5.com/

输入你的那串数字就行了,如果密码不是太变态,都可以出来的
walkghost 2008-11-30
  • 打赏
  • 举报
回复
至少到现在说来,还没有哪一个数学家能真正的实现MD5的逆运算。去年山东有位教授说是实现了,到后来才知道并没有实现。
一般找回密码的功能不会做成真正的找回密码,而是给个链接,允许用户对自己的用户名设定新的密码,链接以邮件形式发送到用户注册的时候用的信箱里。至于链接的格式和实现方法,你要多多考虑,一不小心就可能造成很严重的安全问题。
Fibona 2008-11-30
  • 打赏
  • 举报
回复
MD5加密的不能解密,如果说是忘记密码,应该根据一个值,进行正确验证后,进行重设置密码,或者根据注册邮件,给一个三方加密这样的连接到一个重设置页面进行密码重置.
在三方加密页面进行参数解密与匹配,如果成功就让用户重新设置密码

pdsnet 2008-11-30
  • 打赏
  • 举报
回复
先发给用户 再 加密.
mjjzg 2008-11-30
  • 打赏
  • 举报
回复
如果还原的,网上所说的MD5解密都是对照他们自己数据库中已经存储MD5加密值和原文来进行的所谓的解密
当需要修改密码时你可以覆盖掉这个密码或是设置一个默认值让用户及时的更改
shadowjl 2008-11-30
  • 打赏
  • 举报
回复
MD5是不可逆的,你只能生成一个新的密码给它
  • 打赏
  • 举报
回复
实际上,如果你计算md5之前把待计算的字符串随便加上一段胡乱打入的写死的字符串,http://www.cmd5.com/ 的把戏就“破产”了。当然,如果这个补充字符串是像软件开发商信息、网站授权信息之类的有意义的字符串,看可以起到防止用户将数据库拿给其它非授权用户的系统中使用的目的等。

我这样说的目的。就是希望楼主了解,如果你使用了md5方法就要遵循他的初衷来设计你的程序。没有可能解密之类的。但是你可以把用户曾经输入过得密码及其md5值写入自己的数据库,这样根据md5值就能反向查处原始密码,正如2楼所说的,这叫做数据库查询而不是解密。用户输入的密码不能直接作为md5处理对象,还应该将其人为扩展成一个较长的字符串,这样别有用心的人就无法用你的漏洞来做出一个攻击你的系统的代码反过来要挟你。

62,243

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧