最近这个老生常谈的问题,又被一些一知半解的人抖搂出来,真不知道这些人出于什么目的?
先说概念:md5是摘要式加密算法。(重点是“摘要式”这三个字。)
例如:
1234567890abcdefghijklmnopqrstuvwxyz 这里一共有36位长度的字符。
我把用md5转换以后是:
32位:
928f7bcdcd08869cc44c1bf24e7abec6
16位:cd08869cc44c1bf2
我们可以看到原来36位长度的字符串,被转换成32位或16位长度的字符串。其他的字符串事实上已经被丢弃了。
你把这32位或16位的加密串,给任何人他都不可能还原,道理很简单:它是摘要算法,从原文中摘出一些特征进行加密。它是非对称的,所有永远没有还原的可能,就好比给你一个肉包,你能还原出一头猪的肉嘛?
为什么有人声称能破解md5呢?
这个道理其实每个搞IT的从业者都懂,当然了每个行业也有很多故弄玄虚,喜欢吸引眼球的人。
简单的说:各式各样所谓的破解都是预先知道了某个字符串加密的结果,保存起来。你查的时候把结果返给你而已。中国某网站声称已经保存了数百亿的md5密钥和原文的对应表。你去查询一个md5,瞬间就会告诉你密钥原文,但这也仅限于它收录的条目。如果你的加密原文很诡异,没被他收录他也望洋兴叹。 这道理谁都懂,你能说他破解了md5么?
扩展阅读:
很多人狭隘的认为,md5就是加密密码的。这个说法太片面,打开脑洞想想:一般人的密码有七八位长度可以md5加密。
如果我的密码有十万字长,能用md5加密嘛?答案是肯定可以的。
如果我把一本红楼梦用md5加密也就成了32位或16位的字符串。如果可逆可破解的话,想想是一件多么可怕的事? 我是不是可以把人类几千年所有的文明史(经史子集全球所有的音乐电影)全部压进这一串md5中?
顺便提一嘴:
16位的md5比32位更安全,因为它丢弃的原文特征更多。
最后给程序员同行说的话:
md5所谓的不安全,是因为很多系统被撞库,md5原文泄露,被某些查询机构收录,人家数百亿的结果库里很有可能有你的密码原文。 所以为了安全起见,目前md5入库一定记得“加盐”。
,