因此,当构建一个web应用程序和存储密码时,安全和性能是需要牢记的重要事项。看到证据表明,由于GPU的速度越来越快,甚至可以轻易破解SHA1密码,我想知道存储密码的最佳做法是什么。密码盐和秘密
我认为,为了增加更多的安全性来存储密码,你可以添加一个秘密盐。因此,举例来说,这样做的Python代码可以是:
import hashlib
import hmac
secret = 'XYZ'
h = hmac.new('salt' + secret, 'password')
- 这是做一个平常的事?
- 这有什么缺点?
- 该领域的最佳实践是什么?
P.S.我没有在安全论坛上发布这篇文章,因为我想要一个Web应用程序开发人员的视角。
我没有看到一个很大的区别就在这里,因为大不了破解密码是多么难以逆转的散列值。因此,即使你的盐现在更安全,它可能只是一点点帮助(例如通过消除某些彩虹桌的使用)。会话的随机秘密通常通过生成随机比特来获得,例如使用随机呼叫。 – dolaameng 2012-07-07 13:53:47
scrypt,bcrypt,PBKDF2 – CodesInChaos 2012-07-07 13:56:06
请注意:[Python * hmac *](http://docs.python.org/library/hmac.html)的默认散列函数是MD5。 HMAC的算法简单来说就是应用哈希函数两次。 – Gumbo 2012-07-07 16:26:05