• 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加盐的目的,增加被破解的难度。

    密码学的应用安全,是建立在破解所要付出的成本远超出能得到的利益上的。

  • 相关阅读:
    Spring 源码学习
    Feign Client 原理和使用
    算法基础:排序算法看这一篇就够了
    Spring 源码学习2
    Spring 源码学习
    最优包裹组合-贪心算法
    @Transactional 事务的底层原理
    Mysql索引扫盲总结
    snowflake原理解析
    分布式ID总结
  • 原文地址:https://www.cnblogs.com/zhou-guobao/p/5458926.html
走看看 - 开发者的网上家园