加密鹽的意義和用途

藍星花發表於2017-11-26

加鹽加密是一種對系統登入口令的加密方式,它實現的方式是將每一個口令同一個叫做”鹽“(salt)的n位隨機數相關聯。

1背景

涉及身份驗證的系統都需要儲存使用者的認證資訊,常用的使用者認證方式主要為使用者名稱和密碼的方式,為了安全起見,使用者輸入的密碼需要儲存為密文形式,可採用已公開的不可逆的hash加密演算法,比如SHA256, SHA512, SHA3等,對於同一密碼,同一加密演算法會產生相同的hash值,這樣,當使用者進行身份驗證時,也可對使用者輸入的明文密碼應用相同的hash加密演算法,得出一個hash值,然後使用該hash值和之前儲存好的密文值進行對照,如果兩個值相同,則密碼認證成功,否則密碼認證失敗。

由於密碼是由使用者設定的,在實際應用中,使用者設定的密碼複雜度可能不夠高,同時不同的使用者極有可能會使用相同的密碼,那麼這些使用者對應的密文也會相同,這樣,當儲存使用者密碼的資料庫洩露後,攻擊者會很容易便能找到相同密碼的使用者,從而也降低了破解密碼的難度,因此,在對使用者密碼進行加密時,需要考慮對密碼進行掩飾,即使是相同的密碼,也應該要儲存為不同的密文,即使使用者輸入的是弱密碼,也需要考慮進行增強,從而增加密碼被攻破的難度,而使用帶鹽的加密hash值便能滿足該需求。


2加密鹽的實現方法

2.1加密儲存

輸入: 密碼字串passWord

輸出:鹽值 salt 、密碼密文passWordHash

函式:加密hash函式

其中:“鹽值 salt”是在加密過程中生成的隨機字串;

可以將salt放到passWord前面作為字首或放到passWord後面作為字尾得到新的字串PS,即,PS = password和salt的組合串;

 密碼密文passWordHash = Hash加密函式(PS );

將使用者名稱、密碼密文passWordHash和鹽值salt一起儲存到資料庫中。


2.2密碼校驗

輸入: 密碼字串passWordCur

輸出:密碼校驗是否成功

處理: 1)、取出當前使用者密碼加密時使用的鹽值salt

2)、得到本次輸入的密碼passWordCur和鹽值salt的組合字串PS

3)、得出本次輸入密碼的密文passWordHashCur= Hash加密函式(PS );

4)、比較passWordHashCur和使用者最初設定的密碼密文passWordHash是否一致,如果一致,則校驗成功,否則校驗失敗。



相關文章