2011-03-31 44 views
0

我正在尋找密碼哈希函數,可以陪伴我多年。選擇錯誤的可能是致命的,因爲不可能在沒有用戶登錄的情況下升級現有哈希。我應該使用哪個密碼哈希函數?

通常建議使用glibc中的bcrypt或sha256-crypt。這些使用 key stretching, 但我不喜歡這個事實,我無法延長以後的伸展。 一個人應該能夠跟上摩爾定律。

現在,我正在考慮維基百科鏈接中的簡單算法,以及用於哈希函數的SHA-256。這讓我可以繼續添加迭代,因爲我認爲合適。

但是,該算法不是一個標準。因此,我不可能使用LDAP,htaccess等密碼散列。

有更好的選擇嗎?

+0

不知道很多關於其他約束的問題,它不可能說 - 其應用程序涉及到它們將支持的內容 – symcbean 2011-03-31 12:28:18

回答

0

您應該使用SHA1進行密碼散列。但是,除了算法之外,還應該考慮將salt添加到密碼中。理想情況下,應該爲每個密碼創建一個隨機鹽並與密碼一起存儲。

這是打敗彩虹桌。在此

大討論:Non-random salt for password hashes

+0

SHA-1被設計爲快速,這使得它成爲密碼散列的一個不好的選擇。 – Mark 2011-06-28 15:43:52

+0

@Mark:你能詳細說明一下嗎? – DuneCat 2012-09-13 14:01:25

+0

SHA-1的目標是獲取一堆字節並快速生成密碼安全哈希。 「快速」部分意味着蠻力搜索比使用慢散列函數更快。最好的辦法是使用帶有許多迭代的密鑰派生函數,因爲它們專門設計需要很長時間來計算。 – Mark 2012-09-13 16:01:33

0

我可以在此現身,從另一個角度,但如果你說你可能誰也不會登錄的時間再長週期呈現很大的風險用戶。您允許用戶使用相同密碼的時間越長,攻擊者設法以某種方式獲取密碼哈希文件的暴力威脅就越大。不要依靠安全防止發生......

散列函數不會過時,所以我想你應該很好地審查這個每年,希望你會讓你的用戶更改密碼比這更頻繁。

這一切都取決於您的具體要求,顯然,但有一個思考。

一般來說bcrypt或sha256都可以很好地滿足要求。

更新:您可以考慮將此查詢彈出到security.stackexchange.com,因爲這是一個安全管理問題。

+0

一個好的散列的整個想法是,即使有人不抓取散列,他們也不會做反向查找。無論哪種方式,無論您使用什麼算法,糟糕的密碼都會被破解。糟糕的協議使用良好的哈希也容易受到重播攻擊或傳遞哈希攻擊。除了使用哪個散列之外,還有很多其他的東西。 – Marcin 2011-03-31 14:35:54

+0

@Marcin - 忘記反向查找。我正在根據OP查看時間角度。暴力強制發生 - 更好的散列函數使用時間更長,但OP似乎允許很長時間。我同意你的其他觀點 - 而目前的想法表明,現在對於大多數目的而言,bcrypt和sha256都是合適的。 – 2011-03-31 14:47:32

+0

爲什麼不有帳戶到期? – Slartibartfast 2011-04-01 02:47:52