因此,當構建一個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