作家
登录

密码存储中MD5的安全问题与替代方案

作者: 来源: 2017-06-28 16:04:50 阅读 我要评论

  •     repeat (2^cost)                         // "^"表示指数关系 
  •         state <- ExpandKey(state, 0, key
  •         state <- ExpandKey(state, 0, salt) 
  •     return state  
  • 比如下面是笔者的一次测试结不雅(小我弱机PC, i5-4460 CPU 3.20GHz) :

    1. cost       time 
    2.          8   0.021307 
    3.          9   0.037150 
    4.         10   0.079283 
    5.         11   0.175612 
    6.         12   0.317375 
    7.         13   0.663080 
    8.         14   1.330451 
    9.         15   2.245152 
    10.         16   4.291169 
    11.         17   8.318790 
    12.         18  16.472902 
    13.         19  35.146999  

    附:测试代码

    显然,cost不是越大年夜越好,越大年夜的话会越占用办事器的CPU,反而轻易引起DOS进击。建议根据办事器的设备和营业的需求设置为10~12即可。最好同时对同一IP同一用户的登录测验测验次数做限制,预防DOS进击。

    一个安然地存储暗码的筹划

    总上所述,一个安然地存储暗码的筹划应当是如许子的:(直接放代码吧)

    这个速度与md5比拟的确是蜗牛与猎豹的差别 — 即使按照cost=8, 一个8位的大年夜小写字母+数字的暗码也要14万年才能暴力破解掉落,更何况一般办事器都邑至少设置为10或更大年夜的值(那就须要54万年或更久了)。

    这里不得不插播一句:PHP不雅然是世界上最好的说话 — 标准库琅绫擎已经给出懂得决筹划。

    1. class User extends BaseModel 
    2.     const PASSWORD_COST = 11; // 这里设备bcrypt算法的价值,根据须要来随时进级 
    3.     const PASSWORD_ALGO = PASSWORD_BCRYPT; // 默认应用(如今也只能用)bcrypt 
    4.  
    5.     /** 
    6.     * 验证暗码是否精确 
    7.     * 
    8.     * @param string $plainPassword 用户暗码的明文 
    9.     * @param bool  $autoRehash    是否主动从新计算下暗码的hash值(如不雅有须要的话) 
    10.     * @return bool 
    11.     */ 
    12.     public function verifyPassword($plainPassword, $autoRehash = true
    13.     { 
    14.         if (password_verify($plainPassword, $this->password)) { 
    15.             if ($autoRehash && password_needs_rehash($this->

        推荐阅读

        开发一个Linux调试器(二):断点

      跟着后面文┞仿的宣布,这些链接会逐渐生效。 预备情况 断点 存放器和内存 Elves 和 dwarves 源码和旌旗灯号 源码层慢慢履行 源码层断点 调用栈 攫取变量 10.>>>详细阅读


      本文标题:密码存储中MD5的安全问题与替代方案

      地址:http://www.17bianji.com/lsqh/35949.html

    关键词: 探索发现

    乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

    网友点评
    自媒体专栏

    评论

    热度

    精彩导读
    栏目ID=71的表不存在(操作类型=0)