加密鹽的意義和用途
加鹽加密是一種對系統登入口令的加密方式,它實現的方式是將每一個口令同一個叫做”鹽“(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是否一致,如果一致,則校驗成功,否則校驗失敗。
相關文章
- 如何鹽加密加密
- 鹽值加密概念加密
- 應用伺服器的含義和用途伺服器
- java實現MD5加鹽加密方法Java加密
- 實踐和思考的重要意義
- Python使用AES進行鹽值加密和解密Python加密解密
- 軟體測試的目的和意義
- 泛型的意義和作用是啥?泛型
- synchronized的意義synchronized
- 人生的意義
- 使用雜湊加鹽法來為密碼加密【轉】密碼加密
- 如果沒有加密貨幣 區塊鏈是否有應用的意義?加密區塊鏈
- nginx的配置檔案server_name的意義 location意義NginxServer
- C#中的ref和out的意義和使用方法C#
- code review的意義View
- Java技術分享:void的用法和意義Java
- Java培訓分享void的用法和意義Java
- 介面對前後端和測試的意義後端
- 簡述回撥函式的意義和作用函式
- k8s-Pod的概念和存在的意義K8S
- 反向代理含義及用途介紹
- PVP模式存在的意義模式
- 學習Lua的意義
- 特徵向量的物理意義特徵
- 前端框架存在的意義前端框架
- 前端MV*框架的意義前端框架
- 垃圾收集分析的意義
- update-initramfs的用途和功能
- vue中“:”、“.”、“@”意義Vue
- 軟體產品檢測的意義、價值和目的
- 資料安全的重要性和意義是什麼?
- JS 中 __proto__ 和 prototype 存在的意義是什麼?JS
- 關於《網路安全法》的意義和亮點
- 維修app開發的意義APP
- python編碼的意義Python
- Oracle中checkpoint存在的意義Oracle
- linux版本號的意義Linux
- character_set_database的意義Database