代码之家  ›  专栏  ›  技术社区  ›  makkasi

werkzeug.security。check\u password\u哈希花费的时间太长

  •  2
  • makkasi  · 技术社区  · 9 年前

    check_password_hash 花费的时间比预期的要长得多。使用Werkzeug 0.12和0.9进行测试。下面的测试表明,检查密码大约需要2秒钟。为什么要花这么长时间?

    def verify_password(self, password):
        logging.info(self.password_hash)
        logging.info(str(datetime.now()))
        result = check_password_hash(self.password_hash, password)
        logging.info(str(datetime.now()))
        return result
    
    hash:pbkdf2:sha256:......................................
    2017-07-28 13:52:14.904270
    2017-07-28 13:52:17.041060
    

    =============编辑1============ 好的,看来我还没有完全清除我的libraries文件夹。我试过多次,从Werkzeug==0.9.6升级到Werkzeug==0.12解决了这个问题。降级到0.9.6会返回问题。

    1 回复  |  直到 9 年前
        1
  •  5
  •   makkasi    4 年前

    起初我认为问题是因为sha1和sha256之间的差异。然而,影响哈希时间的是创建密码时使用的迭代次数。 http://werkzeug.pocoo.org/docs/0.12/utils/#werkzeug.security.generate_password_hash

    将迭代次数减少回1000次可以加快哈希运算,但会降低安全性。

    generate_password_hash(password, method='pbkdf2:sha256:1000')
    

    在数据库中,我有两种类型的密码,一些是在升级Werkzeug之前生成的,另一些是在升级之后生成的。

    pbkdf2:sha1:1000$.......
    pbkdf2:sha256:50000$......
    

    所以第一个和第二个之间的差异很大,因为有1000次迭代和50000次迭代。