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




  

相关话题

  你会吃「人造肉」吗? 
  如果你拥有了《三体》中的智子,你会用它来做什么?可能会发生什么故事? 
  计算机视觉(CV)的算法有哪些,具体都有哪些特点? 
  如何看待有媒体称「英特尔已获得向华为供货许可」? 
  如何彻底解决「网络延迟」这个问题? 
  人类社会在一个世纪内能够产生多大的变化? 
  Algorithmic Game Theory 和经济学中的 Game Theory 相似度大吗? 
  算法工程师如何应对做算法策略的不确定性;比如没效果,这时绩效怎么保证? 
  媒体称美国开半导体高峰会强迫台积电、三星等 45 天内交出商业机密数据,是否合理?可能会产生哪些影响? 
  如何看待华为将于 6 月 2 日举办鸿蒙发布会?你对此有哪些期待? 

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





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