如果直接對密碼進行雜湊,那麼黑客可以對通過獲得這個密碼雜湊值,然後通過查雜湊值字典(例如md5密碼破解**),得到某使用者的密碼。
加salt可以一定程度上解決這一問題。所謂加salt方法,就是加點「佐料」。其基本想法是這樣的:當使用者首次提供密碼時(通常是註冊時),由系統自動往這個密碼裡撒一些「佐料」,然後再雜湊。而當使用者登入時,系統為使用者提供的**撒上同樣的「佐料」,然後雜湊,再比較雜湊值,已確定密碼是否正確。
這裡的「佐料」被稱作「salt值」,這個值是由系統隨機生成的,並且只有系統知道。這樣,即便兩個使用者使用了同乙個密碼,由於系統為它們生成的salt值不同,他們的雜湊值也是不同的。即便黑客可以通過自己的密碼和自己生成的雜湊值來找具有特定密碼的使用者,但這個機率太小了(密碼和salt值都得和黑客使用的一樣才行)。
下面以php示例,講解md5($pass.$salt)加密函式。
<?php
function hash($a)
?>
呼叫方式:$new_password =hash ($_post[password]); //這裡接受表單提交值,並進行加密
下面詳細介紹一下加salt雜湊的過程。介紹之前先強調一點,前面說過,驗證密碼時要使用和最初雜湊密碼時使用「相同的」佐料。所以salt值是要存放在資料庫裡的。
使用者註冊時,
使用者輸入【賬號】和【密碼】(以及其他使用者資訊);
系統為使用者生成【salt值】;
系統將【salt值】和【使用者密碼】連線到一起;
對連線後的值進行雜湊,得到【hash值】;
將【hash值1 】和【salt值】分別放到資料庫中。
使用者登入時,
使用者輸入【賬號】和【密碼】;
系統通過使用者名稱找到與之對應的【hash值】和【salt值】;
系統將【salt值】和【使用者輸入的密碼】連線到一起;
對連線後的值進行雜湊,得到【hash值2 】(注意是即時運算出來的值);
比較【hash值1 】和【hash值2 】是否相等,相等則表示密碼正確,否則表示密碼錯誤。
程式設計師會統一使用乙個salt值(儲存在某個地方),也可以給每個使用者都生成私有的salt值(個體更安全)。
總結起來就是,密碼=密碼+(密碼)的方式,這樣雖然後台驗證增多了一層。但是自然安全多了。
md5加密 鹽度Salt
md5資訊摘要演算法 英語 md5 message digest algorithm 一種被廣泛使用的密碼雜湊函式,可以產生出乙個128位 16位元組 的雜湊值 hash value 用於確保資訊傳輸完整一致。想要做乙個web 入口得搭建好,使用者的資訊資料也要統一保護好,保護不好會造成安全隱患,一...
MD5加密及加鹽salt
1.不加salt時每次生成的都不一樣,shane ubuntu newdisk4 qtcreater zlg qt 4.8.6 qt everywhere opensource src 4.8.6 examples desktop screenshot openssl passwd 1 123 1 ...
salt鹽度與使用者密碼加密機制
1 密碼必須雜湊儲存 內容略 2 加salt雜湊 我們知道,如果直接對密碼進行雜湊,那麼黑客 統稱那些有能力竊取使用者資料並企圖得到使用者密碼的人 可以對乙個已知密碼進行雜湊,然後通過對比雜湊值得到某使用者的密碼。換句話說,雖然黑客不能取得某特定使用者的密碼,但他可以知道使用特定密碼的使用者有哪些。...