百科问答小站 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值可以对应多个原文。




  

相关话题

  大家如何看待华为最新公布的华为海思总裁公布备胎转正,科技自立的问题? 
  摩尔定律是正确的么? 
  如何看待关于“数据结构与算法基础”的重要性? 
  从物理层面解释,为什么在键盘上输入 abc,电脑屏幕上就会显示 abc? 
  有哪些万万没想到的冷知识? 
  为什么中国无法成就类似谷歌和微软的技术导向型公司? 
  先用md5,再用sha1,这样密码会安全一点吗? 
  显示器+网线能取代电脑吗? 
  有没有可能人类不吃饭或者隔几天吃一顿饭? 
  1000 年后的世界格局会是怎样的? 

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





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