1、實現原理
加鹽的實現過程通常是在需要散列的字段的特定位置增加特定的字符,打亂原始的字串,使其生成的散列結果產生變化。比如,用戶使用了一個密碼:
x7faqgjw
經過MD5散列后,可以得出結果:
455e0e5c2bc109deae749e7ce0cdd397
但是由于用戶密碼位數不足,短密碼的散列結果很容易被彩虹表破解,因此,在用戶的密碼末尾添加特定字串(綠色字體為加鹽的字段):
x7faqgjwabcdefghijklmnopqrstuvwxyz
因此,加鹽后的密碼位數更長了,散列的結果也發生了變化:
4a1690d5eb6c126ef68606dda68c2f79
以上就是加鹽過程的簡單描述,在實際使用過程中,還需要通過特定位數插入、倒序或多種方法對原始密碼進行固定的加鹽處理,使得散列的結果更加不容易被破解或輕易得到原始密碼,比如(加為加鹽字串):
x7afabqgcjw
2、代碼樣本
PHP
//這是一個簡單的、在輸入內容之後加入“WIKIPEDIA“并進行散列的PHP代碼。
<?php
function hash($a) {
$salt="WIKIPEDIA"; //定義一個加鹽字段(WIKIPEDIA),一旦設定并使用,將不可更動。
$b=$a.$salt; //把密碼和加鹽字段連接。
$b=md5($b); //執行MD5散列。
return $b; //返回散列。
}
?>