如何将MD5哈希值在解密成正常字符串?

ysl817 2005-09-08 10:03:39
各位好,小弟现在利用如下函数可以将一字符串(data)转换成MD5的加密字符(result),但是我如何再将MD5的加密字符(result)转换成字符串(data)呢,即解密呢?谢谢!

使用加密服务提供程序 (CSP) 提供的实现计算输入数据的 MD5 哈希值
byte[] MD5hash (byte[] data)
{
// This is one implementation of the abstract class MD5.
MD5 md5 = new MD5CryptoServiceProvider();

byte[] result = md5.ComputeHash(data);

return result;
}
...全文
1477 33 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
33 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
对于同一个MD5结果,有无数多个原字符串
————————————————————————————————————
虽然从来没有说过MD5不可能有碰撞,但是碰撞几率是个明确研究的目标。你的这种说法,明显是对MD5的糟蹋呦。
低调的小青蛙 2006-02-11
  • 打赏
  • 举报
回复
MD5 的值只是对原字符串的一个运算,对于同一个MD5结果,有无数多个原字符串。

打个比喻:(只是一个比喻)

原字符串:5+5 => MD5:10
同时,原字符串:4+6 => MD5:10

因此,对于MD5的解密,实际上指:对于指定的MD5结果,可以找到 "一个" 原字符串。一定要和某一个原字符串吻合,那是不可能的。
闲思暇想 2006-02-11
  • 打赏
  • 举报
回复
其实你知道怎么解密又如何,如果真的能解密的话,这套加密算法就失效了,以后就没有人用了。

加密的目的就是让你解不了嘛
kisons 2006-02-11
  • 打赏
  • 举报
回复
LZ真牛!这个问题把所有学计算机的人问傻了...
如果你能找到山东大学的那两位教授就有办法了,那两位教授是当今在联合国加密这块倍受瞩目的两位杰出人物.
他们有办法的,已经从数学模型上搞出来了.
unixpeter 2006-02-11
  • 打赏
  • 举报
回复
Private sub Billgate(bill as hash(),gates as hashed()) as bill
end sub
unixpeter 2006-02-11
  • 打赏
  • 举报
回复
bill gates可以做到,他把MS的所有计算机拿来计算
dofine 2006-02-11
  • 打赏
  • 举报
回复
不可逆
闲思暇想 2006-02-11
  • 打赏
  • 举报
回复
md5后的hash 字符串32位,这也就意味着hash只能有(26+10)^32个
但是原始字符串是正无穷个!这是不是意味着多个原始字符串对应一个hash?
——————————————————————————————————————
不是这么推理的。在计算机上没有“无穷多”这个概念,这个概念是逻辑符号推理出来的而不是计算机计算出来的。逻辑符号上,无穷大代表大于一个大家约定的数字,无穷小代表着小于一个大家约定的数字,这些是明确的可计算性的,不是空洞的概念。

MD5的核心就是让散列计算的效果非常好,这是一个明确的算法过程,而不是空洞地说一个概念。


说的好,感觉像当年学物理的时候的一个题目:

一个中间有隔板的密封盒子,一端真空,一端有N个气体分子。抽去隔板后,在气体分子自由运动碰撞的情况下,N个气体分子跑到盒子一端的可能性有多大?

题目的解是一个跟N相关的一个式子,反正是N越大,值越小,N是无穷大后,值算到比无限小还小。最后老师就说,因为这个值太小,所以可能性是不可能。估计这就是你们说的那个碰撞几率吧。
levin9 2006-02-11
  • 打赏
  • 举报
回复
加密过程不可逆
  • 打赏
  • 举报
回复
说白了,就是你要说清楚怎么查找md5的多个原字符串,你要说清楚算法。

这样大家可以对你的算法的效率进行评估。例如我又一个合同,文本可能只有几百个字。我就能评估用你的算法,用现在世界上已知的最快的计算机,找到一个基本能判断为人类合同(而不是外星人的合同)的另一份碰撞结果需要多少个世纪的时间。
  • 打赏
  • 举报
回复
再举一个计算机程序逻辑设计的基本公理:

如果你把一只猴子放在键盘前边足够长时间,它就会把你编写过的所有程序都给你重新打出来!

这个公理用来对那些以为人工智能、自动编程(从而代替人工编程)的空泛议论加以约束,避免不切实际地设计程序。
  • 打赏
  • 举报
回复
md5后的hash 字符串32位,这也就意味着hash只能有(26+10)^32个
但是原始字符串是正无穷个!这是不是意味着多个原始字符串对应一个hash?
——————————————————————————————————————
不是这么推理的。在计算机上没有“无穷多”这个概念,这个概念是逻辑符号推理出来的而不是计算机计算出来的。逻辑符号上,无穷大代表大于一个大家约定的数字,无穷小代表着小于一个大家约定的数字,这些是明确的可计算性的,不是空洞的概念。

MD5的核心就是让散列计算的效果非常好,这是一个明确的算法过程,而不是空洞地说一个概念。
likang2008 2006-02-11
  • 打赏
  • 举报
回复
MD5是不可逆的运算
feiyun0112 2006-02-11
  • 打赏
  • 举报
回复
没办法解密,只能把字符串加密与原来的结果比较
Qqwwee_Com 2006-02-11
  • 打赏
  • 举报
回复
md5后的hash 字符串32位,这也就意味着hash只能有(26+10)^32个
但是原始字符串是正无穷个!这是不是意味着多个原始字符串对应一个hash?



====CSDN 小助手 V2.5 2005年11月05日发布====
CSDN小助手是一款脱离浏览器也可以访问Csdn论坛的软件
界面:http://blog.csdn.net/Qqwwee_Com/archive/2005/11/05/523395.aspx
下载:http://szlawbook.com/csdnv2

xuhongli_1978 2006-02-10
  • 打赏
  • 举报
回复
顶顶
eflea 2006-02-10
  • 打赏
  • 举报
回复
来这里吧,在线解密,就是穷举出来的
http://www.xmd5.org/index_cn.htm
yes4pierce 2006-02-10
  • 打赏
  • 举报
回复
嘿嘿,有报道说山东大学,好像有个数学相关的学院,那个女的院长,领着几个人,找到了解密方法。
不过我一直怀疑,这又是中国人糊弄中国人
guxingwang 2006-02-10
  • 打赏
  • 举报
回复
呵呵,这个暂时还没有什么比较好的解决的办法。
wav 2006-02-10
  • 打赏
  • 举报
回复
MD5是不可逆的。
加载更多回复(13)

62,243

社区成员

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

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

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

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