繁体   English   中英

py-bcrypt提供了与flask-bcrypt不同的哈希结果-可能吗?

[英]py-bcrypt giving different hash results than flask-bcrypt - possible?

我在flask-security之上使用flask-bcrypt包在python应用程序中生成哈希。 对于test12的密码,我得到的结果是'$ 2a $ 12 $ ibinoz7sTc76Vh09shUhruYD8CrJyUxPpu1m.kb6LmFmzvWBbb52a'

(根据bcrypt文档,使用了随机生成的盐)

但是当我在python终端中执行以下操作时:

import py-bcrypt
print bcrypt.hashpw("test12", '$2a$12$ibinoz7sTc76Vh09shUhruYD8CrJyUxPpu1m.kb6LmFmzvWBbb52a')

我得到:$ 2a $ 12 $ ibinoz7sTc76Vh09shUhru1wllZi3KqQEluhhInj5FAghM4uczmxe

当我认为我应该找回原本的火柴时。 我还检查了.checkpw,它返回False。

我究竟做错了什么? 他们可能会产生不同的结果吗? 我的应用程序通过身份验证就可以了。

更新:当我手动调用(在Flask应用程序中) print check_password_hash('$2a$12$ibinoz7sTc76Vh09shUhruYD8CrJyUxPpu1m.kb6LmFmzvWBbb52a', 'test12')我也得到False。 确实很奇怪,考虑到“ test12”可以登录。 如果我在应用程序中生成了一个新的密码哈希,并使用上面的方法进行了检查,那么它会通过。

更新2:我了解到flask-security使用HMAC以及所选的密码哈希后端(在我的情况下为bcrypt),我怀疑这可能导致不一致。 假设这是真的,那么问题就变成了,如何验证同时应用了HMAC和bcrypt的密码哈希。 我的应用程序配置为提供作为HMAC盐(sha512)的密钥,因此我尝试了以下操作:

result = hmac.new('...my apps secretkey...', 'test12', hashlib.sha512).hexdigest()
print bcrypt.checkpw(result, '$2a$12$ibinoz7sTc76Vh09shUhruYD8CrJyUxPpu1m.kb6LmFmzvWBbb52a')

但这也不起作用。

如果你想生成相同的散列,你需要相同的密码相同的盐。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM