2011-07-29 65 views
2

我是Django框架中的一個漂亮的新手。在django的默認身份驗證系統中漫步時,我發現django以algorithm$salt$hashed格式存儲用戶密碼。每個用戶的鹽都不一樣; django爲每個用戶生成每個新鹽。在django框架的密碼散列中包含'random salt'的含義是什麼?

我做了幾個網頁,並有很多機會使用其他開源軟件,但總是隻有'一個'鹽串用於哈希。

所以,我的問題是:

  1. 爲什麼Django使用 '隨機' 鹽旁邊 '一' 鹽字符串?
  2. 爲什麼django將它與密碼哈希存儲在同一列中?

回答

6

爲什麼django在'one'鹽串旁邊使用'隨機'鹽?

因爲如果你有一個鹽,你可以爲你的數據庫生成彩虹表比隨機鹽更容易。

如果你想生成彩虹表來解密Django哈希,你將不得不爲數據庫中的每個不同的鹽生成表。彩虹桌的生成需要很長時間,這只是暴力或字典攻擊。

爲什麼django將它與密碼哈希存儲在同一列中?

我不知道你在具體詢問什麼,但可能有2個答案。

- 存儲是因爲某人以這種方式設計的。它可能在鹽田上,並不重要。

- 當用戶通過表單django發送密碼時,將salt加入字符串並計算sha1並檢查它是否與db中的一致。

+0

真的很感謝你的幫助。我問第二號是因爲我不明白第一號的原因。謝謝! – lqez

1

篡改密碼的做法旨在使攻擊者更難以蠻力破解您存儲的密碼。 More info

+0

感謝您的回答,但我知道鹽在哈希中的用途。我的問題不僅僅是爲了鹽。 – lqez

3

隨機鹽可以防止使用彩虹錶快速解密表中的所有密碼。相反,他們必須分別做每一個。

+0

謝謝你的回答。 – lqez