Android 网络交互之MD5为什么要加盐
MD5为什么要加盐
之前面试的时候,遇到一个面试的哥哥。不停的跟我确认我对网络传输过程中的password进行MD5加密的时候,是否加key了。
当时我很纳闷,因为MD5本身已经是不可逆的了,需要破解只有穷举法。只是一个相当耗时间的工作量。
而且,android里面提供的MD5接口也没有说要加key啊
搜索了一圈,没找到什么有用的资料
今天在整理关于网络交互过程中身份校验的相关资料的时候,遇到了一句话
md5的话记得加盐。
瞬间脑部了一下,这里的加盐是不是就是那个面试我的哥哥说的Key啊
再使用“android md5的话记得加盐”进行搜索的时候,得到的内容就多了....
MD5为什么要加盐
虽然MD5本身是不可逆的,但是现在网络上面关于MD5这类加密算法的反解析数据库很多,还有专门的网站。看到那个网站上的说明,你会感觉有那么一点的颤抖
本站针对md5等全球通用加密算法进行反向解密,拥有全球最大的数据库,成功率全球第一,很多复杂密文只有本站才可解密,支持多种算法,实时查询记录超过24万亿条,共占用160T硬盘,成功率95%,一般的查询是免费的。 MD5在线解密破密
而且,生活中很多人使用的密码的强度都很弱,典型的是:123456
总之,给md5加盐,目前来看是很有必要的
如何加盐
这里的加盐就比较简单,也多种多样
- 把username作为盐
用password+username进行MD5加密,作为加密之后的结果;假如username可变的话,就不可取了 - 用password明文的hashcode作为盐
- 随机生成一串字符串作为盐。这里的盐,需要一起上传给服务器进行保存。
Discuz论坛密码就是这么整的。
写在最好
给MD5加盐的目的,增加被破解的难度。
密码学的应用安全,是建立在破解所要付出的成本远超出能得到的利益上的。