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




  

相关话题

  到底什么是科技金融? 
  如何评价在2018中国计算机大会上360技术总裁谭晓生怒摔话筒? 
  为什么近 20 年科技发展的特别快,完全是爆炸式的飞跃? 
  学了计算机后感觉各种软件其实都不可靠,信不过电脑怎么办? 
  「计算」会改变信息量么? 
  美国司法部发布声明称,允许美国华人继续用微信,这一声明法律效力如何?微信真的会被完全禁用吗? 
  未来一百年,可能出现哪些改变世界的发明? 
  百度做了哪些带来负面影响的事情?事后官方是怎么应对处理的?结果如何? 
  很多高效排序算法的代价是 nlogn,难道这是排序算法的极限了吗? 
  充电宝哪个品牌的更实用更安全? 

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





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