共计 1722 个字符,预计需要花费 5 分钟才能阅读完成。
导读 | 在密码学中,MD5 是比较常用的算法之一。大家都知道 MD5 曾一度被认为十分安全,并且在国内外得到广泛适用。然而,王小云教授的研究证明利用 MD5 算法的磕碰能够严重威胁信息体系安全,因此引发了密码学界的轩然大波。那么,关于 MD5 算法你了解多少,它有哪些特性,我们常用的 MD5 加密真的安全吗? |
MD5 全名 Message-Digest Algorithm 5(信息 - 摘要算法)是一种不可逆的加密算法。可以产生出一个 128 位(16 字节)的散列值(hash value),用于确保信息传输完整一致。
- 压缩性:任意长度的数据,算出的 MD5 值长度都是固定的。
- 容易计算:从原数据计算出 MD5 值很容易。
- 抗修改性:对原数据进行任何改动,哪怕只修改 1 个字节,所得到的 MD5 值都有很大区别。
- 弱抗碰撞:已知原数据和其 MD5 值,想找到一个具有相同 MD5 值的数据(即伪造数据)是非常困难的。
从技术的角度来说,MD5 真的很安全,因为 MD5 本身是不可逆的,因此没法解密,除了撞库这样的一个方式。在大数据时代,随意生成几个经常使用的密码的 MD5 密文,然后在百度上搜索 md5 解密网站,然后把密文复制粘贴进去,随意一个 md5 解密可能都可以解密出来。
关于撞库,可能很多人都有所了解了吧,这里简单说以下它的原理:通过建立大型数据库,将常用的各种句子密码等加密成为密文,并存储在数据库中;然后拿着密文到数据库网站查询,就有可能查到密码,这是有解密成功的概率,不一定每种密文都能查询到密码。
随着各种加密原文的收集,在庞大的数据中积累了越来越多的大量句子,MD5 似乎已不再安全,就像一个 post 请求,只是你认为他不是明文,他只是阻隔了一部分什么都不知道的人群。但是对于网络高手来说,只要抓住你的请求,数据大概率就会暴露。
日常网站开发,注册用户的密码通常是要求加密的,不然如果数据被窃取,那么用户的密码丢失就会对用户、公司造成可怕的影响。
MD5 是经常使用的加密方式,它能够将任意长度的输入串通过计算获得固定长度的输出,而且在明文相同的状况下,才能得到相同的密文,这个算法是不可逆的,即使获得了加密之后的密文,也不可能经过解密算法反算出明文。
网上那么多 md5 解密的网站,到底真的能解密吗?对于简单的密码,一定能。因为可以提前对简单的弱密码进行 md5 加密,然后保存到数据库,形成 md5 对应的字典密码。然后利用反查法,只要字典中存在弱密码的 md5 加密串,那么就可以反向查找出对应密码。原理非常简单!
举个例子:
用户经常使用的密码 654321 的 MD5 密文是:c33367701511b4f6020ec61ded352059
大数据平台可以保存大量字典。进行反向查找,那么显然 md5 并没有那么靠谱。再者,md5 不安全的因素还在于很多曾今数据量庞大的网站都被解密过,这些被解密的网站用户信息都极大可能进入某客数据库字典。然而,很多用户其实一辈子都循环用着自己为数不多的那几个常用密码,太多显然也记不住。比如生日前缀加 good 姓氏后面加特殊纪念日等。这就给字典类解密提供了可能性。
一些小伙伴甚至在很多平台上用同一密码,这样非常不安全,对于进入字典库的密码来说,早就已经被记录了。所以随着 md5 的时间推移,被解密的可能性会越来越大。也就是所谓的 md5 大数据平台,但由于很多人、很多平台都用相同的密码。所以你的密码一旦被 md5 大数据平台收录,那么 md5 就很容易被解密。
因为很容易理解,md5 的解密就是反查法。由于 md5 的缺点就是相同密码加密的结果是一样的。也就是同一个密码加密后具备唯一性的特征。
程序开发人员如何避免反查法,降低被解密的可能性,那么就需要使用盐值加密,加入一个随机盐,这样一定程度上可以防止 md5 大数据字典法解密用户信息。只要随机盐不泄露,那么被解密的风险就降低了。
MD5 虽然没有非常安全,但是用处还是很大的。因为虽然对于文件来说碰撞可能容易,但是对于限定长度的密码或者密文来说,MD5 作为高性能高安全的数据签名算法,还是非常实用的。