存儲密碼的最安全的方式是這樣一種方式,即使你(你的應用程序)不知道密碼是什麼。這是通過使用單向散列來完成的。顧名思義,這是一種方法,沒有辦法「散列」哈希值並查看原始值是什麼。
其中的密碼散列的重要特徵是,散列值將始終產生相同的hash.The SHA-2(256)的「敏捷的棕色狐狸跳過懶狗」將總是哈希生成一個散列d7a8fbb307d7809469ca9abcb0082e4f8d5651e46d3cdb762d02d0bf37c9e592
- 雖然沒有辦法採取該散列並確定什麼unhamed值是一個彩虹表的黑客可以看到它對應的(這就是爲什麼弱密碼,即使當散列仍然脆弱,每個彩虹表在世界上都將有散列爲)。
所以散列密碼之前我們添加了鹽(最好爲每個用戶不同的鹽)。如果散列前「敏捷的棕色狐狸跳過懶狗」我們添加了鹽(讓我們只用「鹽」作爲一個簡單的例子),我們現在哈希「saltThe敏捷的棕色狐狸跳過懶狗」,並得到b369837c6389d8dddb06cb669961b0ab80f5166cc8cebcfaf9734ed009c31e8b
作爲我們的散列。
鹽漬散列是你應該存儲(然而/無論哪裏對你的應用程序有意義),並檢查。因此,當一個用戶首先創建一個帳戶,你會:
- 拿他們選擇的密碼,並添加鹽
- 哈希它(使用無衝突密碼散列,如SHA-2)
- 店的結果
當用戶試圖登錄,你會:
- 取密碼,他們投入登錄表單,並添加鹽
- 哈希它
- 把它比作你所存儲
如果不相同,他們輸入了不正確的密碼,如果是相同的,你知道他們輸入了正確的密碼,您可以登錄它們。
而不是加密,它散列它......我覺得它更安全的使用散列而不是加密。 – codeMan
@codeMan Mhmm,你如何獲得這個散列? SHA是加密 – Cruncher
有很多實用工具類,只需決定一個哈希算法並使用它。例如,應使用MD5 – codeMan