2013-06-13 49 views
2

我需要做一些用戶驗證的東西,涉及存儲密碼摘要。 我選擇了sha256,但md5會做的訣竅,因爲它只是一個學習項目,安全性不是什麼大問題。哈斯克爾消化庫

我的問題是關於數百個不同的加密和哈希庫,並保持理智選擇正確的。

我已經通過hackage:一些圖書館快,但也不是「純粹」,一些「純唯快不...等與其他的優點和缺點

你們會用哪一個SHA256。密碼哈希?

例如,我發現Crypto.Hash.SHA256和Data.Digest.Pure.SHA。 哪一個更理想,是什麼,如果任何區別?

謝謝。

回答

3

Data.Digest.Pure.SHA,來自Adam的SHA包,僅用Haskell編寫(因此模塊名稱中的'Pure'),但是iirc不是那麼快。 Crypto.Hash.SHA256來自文森特的cipherhash包,它是一個快速C實現的綁定。

cipherhash的C綁定沒有什麼問題 - 它不是不純的,它不會破壞引用透明性,它只是在構建pureMD5時挑選了一個錯誤的模塊名稱,並且設置了一個先例。

編輯: 無論哪種方式,性能可能不是你主要關心的,所以兩者都很好。此外,簡單地散列密碼通常是一個壞主意。考慮使用含鹽的HMAC或看看pbkdf2。

+0

謝謝托馬斯,我在做哈希之前加鹽。我只是創建一個隨機20個字符的字符串,然後將其附加到密碼,然後只有它散列它。 –

+1

這還不夠。 HMAC與你正在做的不同。故意緩慢的哈希,如PBKDF2,最適合密碼。 – 2013-06-13 05:25:52

+0

是的,簡單的散列+鹽和實際的密鑰導出函數之間存在着差異。 – Wes