国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > PHP > 正文

深入密碼加salt原理的分析

2024-05-04 23:09:01
字體:
來源:轉載
供稿:網友

我們知道,如果直接對密碼進行散列,那么黑客可以對通過獲得這個密碼散列值,然后通過查散列值字典(例如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; //返回散列
}
?>


調用方式:$new_password=hash($_POST[password]); //這里接受表單提交值,并進行加密

下面詳細介紹一下加Salt散列的過程。介紹之前先強調一點,前面說過,驗證密碼時要使用和最初散列密碼時使用“相同的”佐料。所以Salt值是要存放在數據庫里的。

用戶注冊時,

用戶輸入【賬號】和【密碼】(以及其他用戶信息);系統為用戶生成【Salt值】;系統將【Salt值】和【用戶密碼】連接到一起;對連接后的值進行散列,得到【Hash值】;將【Hash值1】和【Salt值】分別放到數據庫中。
用戶登錄時,

用戶輸入【賬號】和【密碼】;系統通過用戶名找到與之對應的【Hash值】和【Salt值】;系統將【Salt值】和【用戶輸入的密碼】連接到一起;對連接后的值進行散列,得到【Hash值2】(注意是即時運算出來的值);比較【Hash值1】和【Hash值2】是否相等,相等則表示密碼正確,否則表示密碼錯誤。
有時候,為了減輕開發壓力,程序員會統一使用一個salt值(儲存在某個地方),而不是每個用戶都生成私有的salt值。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 镇沅| 曲松县| 高邑县| 东明县| 明水县| 汪清县| 湖州市| 西城区| 松溪县| 兴文县| 晋州市| 建昌县| 信宜市| 綦江县| 锡林郭勒盟| 增城市| 佛学| 洪江市| 凌云县| 怀柔区| 古浪县| 隆子县| 德清县| 勐海县| 虹口区| 阳新县| 德令哈市| 石台县| 礼泉县| 乡宁县| 永定县| 朝阳区| 安龙县| 安岳县| 柳江县| 崇礼县| 天长市| 五河县| 黄梅县| 梅州市| 龙口市|