Hash
兩種鹽,一個密碼
如果我有兩個不同的 MD5 密碼雜湊和兩個不同的鹽(鹽是已知的),如果兩個密碼匹配,有什麼方法可以加密推斷?除了暴力破解密碼,就是這樣。
不,如果可能的話,它就違背了使用鹽的目的。例如,可以建構一個彩虹表,將每個可能的密碼連同一個固定的鹽值映射到一個雜湊值。然後給定另一個鹽值和密碼雜湊,如果您要求的可能的話,可以在表中找到密碼。
加密散列函式有 2 個屬性(讓我們用它
h()
來表示一個散列函式):
- 強無碰撞:在多項式時間內(很難)找到
x
,y
這樣h(x) = h(y)
;- 弱無碰撞:如果給定
x
,則不可能在多項式時間內找到,y
使得h(x) = h(y)
即使
x = (password + salt1)
和也會發生這種情況y = (password + salt2)
。沒有辦法關聯h(x)
和h(y)
因為h(x) != h(y)
(不同)。而且由於在多項式時間內不可能計算倒數,因此不可能將它們聯繫起來(除非 $ \text{P}=\text{NP} $ ).就算知道了
x
,h(x)
也h(y)
很難得到y
和salt2
。然而 MD5 和 SHA-1 不是強無衝突的。但它們仍然弱無碰撞。不應使用它們。