gpt4 book ai didi

python - 使用 Flask-Security 的每个用户唯一的盐

转载 作者:太空狗 更新时间:2023-10-29 21:15:27 25 4
gpt4 key购买 nike

在阅读了一些关于加盐密码的内容后,似乎最好为每个用户使用唯一的加盐。我正在努力实现 Flask-Security atm,从文档看来你只能设置一个全局盐:即 SECURITY_PASSWORD_SALT = 'thesalt'

问题:如何为每个密码制作唯一的盐?

谢谢!

编辑:从 Flask-Security 上的文档中,我发现了这一点,这似乎再次表明该模块仅对开箱即用的所有密码使用单一盐。

flask_security.utils.get_hmac(password)
Returns a Base64 encoded HMAC+SHA512 of the password signed with the salt
specified by SECURITY_PASSWORD_SALT.

最佳答案

是的,如果使用 bcrypt(以及其他方案,如 des_crypt、pbkdf2_sha256、pbkdf2_sha512、sha256_crypt、sha512_crypt),Flask-Security 确实通过设计使用了每用户盐。

“SECURITY_PASSWORD_SALT”的配置仅用于 HMAC 加密。如果您使用 bcrypt 作为散列算法,Flask-Security 使用 passlib 进行散列,并在散列过程中生成随机盐。问题 268 中指出了这种混淆:https://github.com/mattupstate/flask-security/issues/268

可以在代码中验证,从encrypt走到passlib:

flask_security/utils.py(第 143-151、39 和 269 行)

def encrypt_password(password):
...
return _pwd_context.encrypt(signed)

_pwd_context = LocalProxy(lambda: _security.pwd_context)

flask_security/core.py(269、244-251 和 18)

pwd_context=_get_pwd_context(app)

def _get_pwd_context(app):
...
return CryptContext(schemes=schemes, default=pw_hash, deprecated=deprecated)

from passlib.context import CryptContext

最后来自:https://pythonhosted.org/passlib/password_hash_api.html#passlib.ifc.PasswordHash.encrypt

note that each call to encrypt() generates a new salt,

关于python - 使用 Flask-Security 的每个用户唯一的盐,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25942092/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com