百科问答小站 logo
百科问答小站 font logo



为什么说 MD5 是不可逆的? 第1页

  

user avatar   hereiswujie 网友的相关建议: 
      

MD5不可逆的原因是其是一种散列函数,使用的是hash算法,在计算过程中原文的部分信息是丢失了的,这点其它同学的答案中有说到
不过有个地方值得指出的是,一个MD5理论上的确是可能对应无数多个原文的,因为MD5是有限多个的而原文可以是无数多个。比如主流使用的MD5将任意长度的“字节串映射为一个128bit的大整数。也就是一共有2^128种可能,大概是3.4*10^38,这个数字是有限多个的,而但是世界上可以被用来加密的原文则会有无数的可能性。
不过需要注意的一点是,尽量这是一个理论上的有限对无限,不过问题是这个无限在现实生活中并不完全成立,因为一方面现实中原文的长度往往是有限的(以常用的密码为例,一般人都在20位以内),另一方面目前想要发现两段原文对应同一个MD5(专业的说这叫杂凑冲撞)值非常困难,因此某种意义上来说,在一定范围内想构建MD5值与原文的一一对应关系是完全有可能的。所以对于MD5目前最有效的攻击方式就是彩虹表_百度百科,具体详情你可以通过链接了解。
这一段为了方便大家理解,改个老梗作为栗子吧

【世界上只有一个我,但是但是妞却是非常非常多的,以一个有限的我对几乎是无限的妞,所以可能能搞定非常多(100+)的妞,这个理论上的确是通的,可是实际情况下....】

至于怎么样算是在计算过程中原文的部分信息丢失,同时还能起到校验验证的作用,我举个栗子
原文:
快点赞啊亲
加密规则:
每个字取拼音声调+笔画数,最后的结果计算乘积,为了也使得我的结果始终保持在一个限定范围内,取最后结果取其与2^14=16384的余数(随便取的,你们就当我有二进制强迫症吧)
如 快 是7画,4声,也就是“特征值11”,以此类推 点9+3=12 赞16+4=20 啊10+4=14 亲9+1=10
最后我发明的不可逆函数值就是
11*12*20*14*10=26400与16384的余数,也就是10016
如果单单给10016这个数字和加密算法,你是无论如何不可能推倒出原文是“快点赞啊亲”的,不过如果给你“快点赞啊亲”你却很容易验证答案是否正确。

嗯,就是这样。


user avatar   MengQiDLuFei 网友的相关建议: 
      

我以为是在MD5计算的过程中丢失了信息。一个MD5值可以对应多个原文。




  

相关话题

  Hyperloop 项目为什么受到追捧? 
  从「中国智造」到「影响世界」,我们更需要的是技术还是自信? 
  古人怎样绘制地图? 
  你在生活中用过最高端的数学知识是什么? 
  为什么印章的安全性极低,但仍然是许多单位的唯一凭证? 
  有没有一种可能,做出来512g内存的计算机,这样就不需要外存了,那os这门课是不是内容可以少点? 
  如何评价一线大厂资深 APP 性能优化系列之异步优化与拓扑排序? 
  如何评价 8 月 26 日李楠举办的怒喵科技首场发布会?有什么亮点和槽点? 
  如何看待2019年9月29日B站何同学评测华为 Mate 30 Pro 的视频被质疑恰饭? 
  清华大学团队获航天界奥林匹克全球冠军,平均年龄 25 岁,如何评价这一成绩? 

前一个讨论
美国的选举人团能否不按照各州选举情况来投票给“指定的总统候选人”?
下一个讨论
C语言的设计模式有哪些?





© 2024-11-08 - tinynew.org. All Rights Reserved.
© 2024-11-08 - tinynew.org. 保留所有权利