我在PHP密碼的安全性讀書了,我偶然發現了一個有趣的說法:爲什麼字符串與它的散列哈希,因爲鹽返回散列?
散列其哈希密碼鹽返回相同的哈希
沒有太多的想法,我去在php.net,發現這是說同樣的事情。
讓我們來看一個例子:
crypt("test", "test"); -> teH0wLIpW0gyQ
crypt("test", "teH0wLIpW0gyQ"); -> teH0wLIpW0gyQ
我完全可以理解的PHP隱窩產生給定的字符串的單向散列。
- 我不明白的是我們如何使用兩種完全不同的鹽來獲得相同的散列輸出?
- 這是否意味着可能有其他鹽可能會給我相同的散列?
跟進
謝謝大家的指針。我現在可以看到,默認行爲是隻使用鹽的前兩個字符,這完全回答了我的所有問題。感覺像一個愚蠢的事情,但...
由於鴿子的原理,對#2的回答很平常。這影響幾乎所有以散列爲基礎的構建,並且在精心設計的系統中不會產生問題,因爲*生成相同散列的輸入*都不可以猜測或發現。 – delnan
#1的答案是:它取決於密碼算法。這個問題沒有普遍的答案。我不知道'crypt'函數的基本工作原理,但即使我這樣做了,我也懷疑它只是一個簡短的答案;-) –
一般來說,是的;可以有一個以上的鹽會給出相同的散列,但是對於一個潤滑良好的網站,這不應該是引起關注的主要原因 –