我們知道,如果直接對密碼進行散列,那么黑客可以對通過獲得這個密碼散列值,然后通過查散列值字典(例如MD5密碼破解網站),得到某用戶的密碼。
加Salt可以一定程度上解決這一問題。所謂加Salt方法,就是加點“佐料”。其基本想法是這樣的:當用戶首次提供密碼時(通常是注冊時),由系統自動往這個密碼里撒一些“佐料”,然后再散列。而當用戶登錄時,系統為用戶提供的代碼撒上同樣的“佐料”,然后散列,再比較散列值,已確定密碼是否正確。
這里的“佐料”被稱作“Salt值”,這個值是由系統隨機生成的,并且只有系統知道。這樣,即便兩個用戶使用了同一個密碼,由于系統為它們生成的salt值不同,他們的散列值也是不同的。即便黑客可以通過自己的密碼和自己生成的散列值來找具有特定密碼的用戶,但這個幾率太小了(密碼和salt值都得和黑客使用的一樣才行)。
下面以PHP示例,講解md5($pass.$salt)加密函數。
復制代碼 代碼如下:
<?php
function hash($a) {
$salt=”Random_KUGBJVY”; //定義一個salt值,程序員規定下來的隨機字符串
$b=$a.$salt; //把密碼和salt連接
$b=md5($b); //執行MD5散列
return $b; //返回散列
}
?>
新聞熱點
疑難解答