在密码学中,MD5是比较常用的算法之一。大家都知道MD5曾一度被认为十分安全,并且在国内外得到广泛适用。然而,王小云教授的研究证明利用MD5算法的磕碰能够严重威胁信息体系安全,因此引发了密码学界的轩然大波。那么,关于MD5算法你了解多少,它有哪些特性,我们常用的MD5加密真的安全吗?
MD5简介
MD5全名Message-Digest Algorithm 5(信息-摘要算法)是一种不可逆的加密算法。可以产生出一个128位(16字节)的散列值(hash value),用于确保信息传输完整一致。
MD5的特性
压缩性:任意长度的数据,算出的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作为高性能高安全的数据签名算法,还是非常实用的。
版权归原作者 ITduo 所有, 如有侵权,请联系我们删除。