2013-07-09 134 views
1

我正在使用PHP。我想要一個安全快速的密碼加密系統。散列密碼一百萬次可能更安全,但速度也更慢。如何在速度和安全之間取得良好的平衡? 我想知道在PHP中最好的加密方法,以及如何應用它。最佳加密技術

+0

散列密碼一百萬次比簡單散列一次速度慢並且不安全 –

+0

@MarkBaker實際上,一個緩慢的散列過程對密碼是有好處的,但對md5或任何sha *算法都是好的...... – Bun

+0

MD5是不可能解密。爲了存儲密碼,它會沒事的。不是嗎? – meorfi

回答

6

使用PHPass,它是一個優秀的哈希框架和非常好用!

+7

'發音「pH傳遞」'suuuuuure ... – Bojangles

2

你不找加密 - 你想找的散列。

我建議openwalls phpass http://www.openwall.com/phpass/

如果您正在使用PHP5.5他們有一個密碼hasing API http://uk3.php.net/password

獲取更多信息。

MD5(無鹽)已經被使用了一段時間,大量的查找列表已經被使用了,與現代硬件每秒獲得700K +密碼相結合,不需要很長時間就可以「反轉」密碼。

用鹽他們更安全,但還是可以很快被破解

+0

解釋爲什麼一個人應該避免MD5。 –

+0

哪個方法我更喜歡phpass crypt或hash。 –

+0

HashPassword($ password)對它進行散列和CheckPassword($ password,$ hash)來檢查它 – exussum

3

使用SHA512 http://php.net/manual/en/function.hash.php。 SHA512未被破解。我建議使用salt:一些隨機字符串,您可以在散列前追加密碼。這可以防止預先計算的彩虹表,但是如果攻擊者獲得對含有密碼和鹽分的數據庫的訪問權限,則不能防止字典攻擊。 SHA512(密碼+鹽) - >散列 在數據庫中存儲散列和鹽 當檢查密碼時,檢索與用戶對應的salt,將其與密碼連接起來,對其進行散列並與存儲的散列進行比較。 這裏閱讀:How long to brute force a salted SHA-512 hash? (salt provided)

遙想關於你的問題,特別是關於你的聲明「哈希密碼萬次可能更安全,也更慢如何實現速度和安全性之間的良好平衡。」實際上,反覆哈希將通過使字典計算所有哈希值來計算成本過高而保護您免受字典式攻擊。我在這裏沒有教你任何東西。從我給你的第一個鏈接開始,計算一個相對較長的SHA512散列花費了大約46毫秒。無論如何,我可以考慮以下因素,可能會影響您的決定,因爲您處於軍備競賽環境: - 提高計算能力(更多CPU核心和GPU計算) - 隨着時間推移改進的算法 - 可用金額攻擊者 - 如果破解出網站的價值(如果較低,則不值得費) 針對 - 您可以隨意使用的CPU功率量 作爲一條經驗法則,我會散列爲儘可能多次以不影響我的網站性能。考慮到每秒登錄次數,您可以大致計算出您可以承擔的CPU電量,而不會影響您的網站性能。

最後一條評論:假設黑客已經可以訪問包含用戶名和散列密碼的表,那麼您可能在此時更擔心他們可以在您的網站上做的所有壞事。

+0

爲什麼SHA512,而不是漩渦? –

+0

是的,的確,你可以使用任何強大的哈希算法尋找輸出。 – Tarik

+0

沒錯。那麼,爲什麼建議具體的一個,如果有幾十速度很慢,大算法和安全性?爲什麼SHA512,而不是其它的呢?如果您指定的那一個,那麼什麼是其背後的原因是什麼?個人喜好,它在網絡環境等真的很好嗎?是的,SHA512是偉大的,但也有類似的報告。爲什麼要限制你的回答1算法? –