鹽(Salt),在密碼學中监透,是指在散列之前將散列內(nèi)容(例如:密碼)的任意固定位置插入特定的字符串皇筛。這個在散列中加入字符串的方式稱為“加鹽”。其作用是讓加鹽后的散列結果和沒有加鹽的結果不相同舞萄,在不同的應用情景中,這個處理可以增加額外的安全性管削。
在大部分情況倒脓,鹽是不需要保密的。鹽可以是隨機產(chǎn)生的字符串含思,其插入的位置可以也是隨意而定崎弃。如果這個散列結果在將來需要進行驗證(例如:驗證用戶輸入的密碼),則需要將已使用的鹽記錄下來含潘。
--摘自維基百科
//這是一個簡單的饲做、在輸入內(nèi)容之後加入“WIKIPEDIA“并進行散列的PHP代碼。
<?php
function hash($a) {
$salt="WIKIPEDIA"; //定義一個加鹽字段(WIKIPEDIA)遏弱,一旦設定并使用盆均,將不可更動。
$b=$a.$salt; //把密碼和加鹽字段連接腾窝。
$b=sha($b); //執(zhí)行MD5散列缀踪。
return $b; //返回散列居砖。
}
?>
數(shù)據(jù)庫表設計
mysql> desc User;
+----------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| user_name | varchar(50) | NO | | | |
| slat | char(50) | NO | | | |
| password | varchar(256)| NO | | | |
+----------+-------------+------+-----+---------+-------+
在用戶注冊或修改密碼的過程中在隨機生成固定長度的字符串salt虹脯,然后以自定義的方式拼接字符串,然都執(zhí)行MD5或SHA散列加密方式奏候,將salt和加密后的密碼存入數(shù)據(jù)庫即可