zoukankan      html  css  js  c++  java
  • 密码安全存储——PBKDF2、bcrypt、scrypt

    密码用单向哈希存储保证了数据库被脱后用户密码的安全。

    由于彩虹表这种攻击方式的存在,一般认为md5,SHA1等单向算法的安全性是不够的。那如何选择合适的加密算法?

    下面介绍业界几种高强度单向哈希算法,并比较其优劣。

    PBKDF2

    PBKDF2 是一个比较简单的算法,它根据’iterations’参数大小,执行N次HMAC运算。

    HW数据库密码存储的最低安全要求是,1000次HMAC-SHA256计算,推荐的是1万次。当然满足最低要求前提下,到底多少次合适需综合考虑性能要求。

    使用GPU阵列、或FPGA来破解PBKDF2仍相对容易。注意这里说的是相对,为了比较接下来提到的另外两种算法。

    BCrypt

    BCrypt 在1999年发明,由于使用GPU、FPGA的破解是基于它们相对于CPU的并行计算优势,因此BCrypt算法不仅设计为CPU运算密集,而且是内存IO密集。

    然而随着时间迁移,目前新的FPGA已经集成了很大的RAM(类型CPU缓存、大约几十兆),解决了内存密集IO的问题。

    Scrypt

    Scrypt 于2009年产生,弥补了BCrypt的不足。它将CPU计算与内存使用开销提升了一个层次,不仅CPU运算需要指数时间开销,还需要指数内存IO开销。

    上图摘自scrypt算法论文,粗略估计了破解上述每个算法需要的时间。

  • 相关阅读:
    数组相关操作
    控制结构和函数
    调用函数和方法
    常用类型、算术和操作符重载
    函数式 CSS (FCSS)
    Javascript 封装问题
    认识javascript中的作用域和上下文
    Javascript 继承-原型的陷阱
    解耦你的HTML,CSS和JAVASRIPT
    网格如此简单
  • 原文地址:https://www.cnblogs.com/gm-201705/p/9863918.html
Copyright © 2011-2022 走看看