MD5是一种哈希函数,曾一度被认为是非常安全的,并且在国外被广泛运用。直到王小云教授的研究证明利用MD5算法的磕碰能够严重威胁信息体系安全,因此不得不做很多的重新思考。那么,MD5碰撞后时代,我们常用的MD5加密真的安全吗?
从技术的角度来说,MD5真的很安全,因为MD5本身是不可逆的,因此没法解密,除了撞库这样的一个方式。在大数据时代,随意生成几个经常使用的密码的MD5密文,然后在百度上搜索md5解密网站,然后把密文复制粘贴进去,随意一个md5解密可能都可以解密出来。
什么是撞库
关于撞库,可能很多人都有所了解了吧,这里简单说以下它的原理:通过建立大型数据库,将常用的各种句子密码等加密成为密文,并存储在数据库中;然后拿着密文到数据库网站查询,就有可能查到密码,这是有解密成功的概率,不一定每种密文都能查询到密码。
随着各种加密原文的收集,在庞大的数据中积累了越来越多的大量句子,MD5似乎已不再安全,就像一个post请求,只是你认为他不是明文,他只是阻隔了一部分什么都不知道的人群。但是对于黑客来说,(就算是刚入门的黑客)来说,只要抓住你的请求,数据大概率就会暴露。
日常网站开发,注册用户的密码通常是要求加密的,不然如果数据被窃取,那么用户的密码丢失就会对用户、公司造成可怕的影响。
MD5是经常使用的加密方式,它能够将任意长度的输入串通过计算获得固定长度的输出,而且在明文相同的状况下,才能得到相同的密文,这个算法是不可逆的,即使获得了加密之后的密文,也不可能经过解密算法反算出明文。
你以为这样就安全了吗?
举个例子:用户经常使用的密码password,生成的MD5密文就是:5f4dcc3b5aa765d61d8327deb882cf99这是不会变的。这就造成可以使用撞库解密的风险,网上在线md5解密的网站很多,如:https://md5.cn/。
这样子使用有风险,那么就需要使用盐值加密,加入一个随机盐,再次去在线md5解密网站尝试解密,结果失败了。只要随机盐不泄露,那么被解密的风险就降低了。
MD5加密没有这么安全,那么是不是说MD5就没有什么用处了呢?话不是这样说的,对于文件来说碰撞可能容易,但是对于限定长度的密码或者密文来说,MD5作为高性能高安全的数据签名算法来说,仍然很实用。