Tri*_*tan 9 python sha1 werkzeug flask
我用generate_password_hash的werkzeug.security到的散列和盐我的密码.我最近看到这篇关于SHA-1碰撞的文章.werkzeug.security使用SHA-1,因为它不再安全,我想要一个替代品.如何在不依赖SHA-1的情况下散列我的密码?
from werkzeug.security import generate_password_hash
generate_password_hash(secret)
Run Code Online (Sandbox Code Playgroud)
dav*_*ism 17
SHA-1的使用generate_password_hash不容易受到攻击,因为它仅用作PBKDF2哈希中的中间迭代步骤.请参阅聊天中的讨论.
当你在PBKDF2中链接数以万亿计的哈希时,风险与纯粹机会破坏强密码的人无法区分.
有关cryptography-dev邮件列表的进一步讨论.
你认为HMAC的安全性在与SHA-1一起使用时仍然没有问题,HMAC-MD5甚至是否安全.
generate_password_hash采用method参数来定制哈希的生成方式.默认是pbkdf2:sha1.为PBKDF2传递不同的派生方法.
generate_password_hash(secret, method='pbkdf2:sha512')
Run Code Online (Sandbox Code Playgroud)
您还可以将迭代次数从默认值150,000更改为更高的数字,代价是较慢的哈希速度.pbkdf2:sha1:200000.
你可能对PBKDF2没问题,只要哈希和迭代得到很好的调整.或者,使用Passlib,它支持比Werkzeug更多的哈希方法.有关要使用哪些哈希值的讨论,请参阅Passlib 推荐的哈希值.此示例显示如何将bcrypt与Passlib一起使用.
pip install passlib bcrypt
Run Code Online (Sandbox Code Playgroud)
from passlib.context import CryptContext
crypt_context = CryptContext(schemes=['bcrypt_sha256'])
crypt_context.hash(secret)
Run Code Online (Sandbox Code Playgroud)