2015-08-18 40 views
0

我讀這篇文章,它似乎像BCrypt是:爲什麼BCrypt比在數據庫中存儲salt和加密密碼更安全?

  • 慢計算從一個密碼哈希(一件好事)
  • 鹽不存儲在數據庫中,但只是在密碼直接使用
  • 使用log_rounds參數說明計算內部散列函數的次數。

所以哈希會是這個樣子:

hashed = hashpw(plaintext_password, gensalt(log_rounds=13)) 
print hashed 
'$2a$13$ZyprE5MRw2Q3WpNOGZWGbeG7ADUre1Q8QO.uUUtcbqloU0yvzavOm' 

但是,如果這是什麼存儲在數據庫中,如果數據庫遭到黑客攻擊,是不是仍然脆弱? BCrypt哈希包含salt和編碼的密碼,爲什麼這比將salt和密碼存儲在數據庫中更好(文章稱它爲壞的解決方案#4)?

BCrypt的哈希機制的緩慢程度與BCrypt一長串常用密碼的硬性和昂貴性有何不同?

+1

據我瞭解BCrypt的安全性,它確實是基於他的慢,因爲你使用的加密越好,他們就越慢。沒有人擁有的一件事是時間。特別是如果你試圖破壞密碼 – WiiMaxx

回答

2

你不能只是散列一個密碼,如果你這樣做,它會容易受字典攻擊;因此你在密碼之前先密碼;這是BCrypt所做的。

密碼鹽可以是公開的,但它們對於每個密碼必須是唯一的。重點在於防止對哈希進行字典攻擊(因此您無法查看與密碼對應的預製哈希列表)。

和PBKDF2一樣,Bcrypt是一個自適應函數;隨着越來越多的計算能力出現,您可以稍後再增加迭代次數,以減少對強力攻擊的攻擊。儘管這個Bcrypt在GPU上比PBKDF2更難加速。