隨機salt二次加密

2021-06-05 14:09:00 字數 871 閱讀 7647

我們知道,如果直接對密碼進行雜湊,那麼黑客(統稱那些有能力竊取使用者資料並企圖得到使用者密碼的人)可以對乙個已知密碼進行雜湊,然後通過對比雜湊值得到某使用者的密碼。換句話說,雖然黑客不能取得某特定使用者的密碼,但他可以知道使用特定密碼的使用者有哪些。

加salt可以一定程度上解決這一問題。所謂加salt,就是加點「佐料」。其基本想法是這樣的——當使用者首次提供密碼時(通常是註冊時),由系統自動往這個密碼裡撒一些「佐料」,然後再雜湊。而當使用者登入時,系統為使用者提供的**撒上同樣的「佐料」,然後雜湊,再比較雜湊值,已確定密碼是否正確。

這裡的「佐料」被稱作「salt值」,這個值是由系統隨機生成的,並且只有系統知道。這樣,即便兩個使用者使用了同乙個密碼,由於系統為它們生成的salt值不同,他們的雜湊值也是不同的。即便黑客可以通過自己的密碼和自己生成的雜湊值來找具有特定密碼的使用者,但這個機率太小了(密碼和salt值都得和黑客使用的一樣才行)。

下面詳細介紹一下加salt雜湊的過程。介紹之前先強調一點,前面說過,驗證密碼時要使用和最初雜湊密碼時使用「相同的」佐料。所以salt值是要存放在資料庫裡的。

使用者註冊時:

1)使用者提供密碼(以及其他使用者資訊);

2)系統為使用者生成salt值;

3)系統將salt值和使用者密碼連線到一起;

4)對連線後的值進行雜湊,得到hash值;

5)將hash值和salt值分別放到資料庫中。

登入時:

1)使用者提供使用者名稱和密碼;

2)系統通過使用者名稱找到與之對應的hash值和salt值;

3)系統將salt值和使用者提供的密碼連線到一起;

4)對連線後的值進行雜湊,得到hash'(注意有個「撇」);

5)比較hash和hash'是否相等,相等則表示密碼正確,否則表示密碼錯誤。

隨機salt二次加密及hash加密漫談

我們知道,如果直接對密碼進行雜湊,那麼黑客 統稱那些有能力竊取使用者資料並企圖得到使用者密碼的人 可以對乙個已知密碼進行雜湊,然後通過對比雜湊值得到某使用者的密碼。換句話說,雖然黑客不能取得某特定使用者的密碼,但他可以知道使用特定密碼的使用者有哪些。加salt可以一定程度上解決這一問題。所謂加sal...

將加密後的密碼進行二次分割

專案中需要對支付密碼打亂後進行二次分割儲存 方法如下 將加密過後的支付密碼分隔 public static string splitstring string securitypassword int i securitypassword.length 4 int j securitypasswor...

tipask二次開發總結 tipask二次開發總結

條件模板 statement1 statement2 statement3 不帶下標變數的陣列迴圈 statement php的迴圈輸入 foreach array as value statement foreach array as key value 可以引用介面替換變數,其中必須為大寫字母,...