bcrypt对密码加密的一些认识(学习笔记)
學習nodejs和mongoDB的時候,接觸了用戶注冊和登錄的一些知識。
1、關于增強用戶密碼的安全性
用戶的密碼肯定不能保存為明文,避免撞庫攻擊。
撞庫攻擊:撞庫是一種針對數據庫的攻擊方式,方法是通過攻擊者所擁有的數據庫的數據通攻擊目標數據庫。可以理解為用戶在A網站被盜的賬戶密碼來登陸B網站,因為很多用戶在不同網站使用的是相同的賬號密碼因此可以起到獲取用戶在B網站的用戶賬戶從而達到目的。(來自知乎https://www.zhihu.com/question/21562202)
所以,在用戶剛創建時,需要對用戶密碼做哈希處理,以替換明文的密碼。這個哈希處理會加鹽。每個用戶加的鹽不一樣,可以有效對抗彩虹表攻擊。(來自nodejs in action)
加鹽:加鹽加密是一種對系統登錄口令的加密方式,它實現的方式是將每一個口令同一個叫做”鹽“(salt)的n位隨機數相關聯。(來自百度)
彩虹表:一個保存哈希鏈首尾值的哈希鏈集。它實現了時間和空間的平衡。(來自知乎https://www.zhihu.com/question/19790488)
2、在明文和密文比對的時候還需要我們提供鹽嗎?
注冊的時候,密文是經過加鹽的,而且鹽是個隨機數,那么我們需要保存這個鹽嗎?
答案是不需要。
bcrypt的compare方法,只需要提供明文和密文就可完成比對,因為鹽是包含在哈希加密后的密文中的,使用compare方法的時候,它會將鹽取出并完成比對。(來自stackoverflow,https://stackoverflow.com/questions/13023361/how-does-node-bcrypt-js-compare-hashed-and-plaintext-passwords-without-the-salt)
總結
以上是生活随笔為你收集整理的bcrypt对密码加密的一些认识(学习笔记)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: strlensizeof
- 下一篇: 什么是业务运维,企业如何实现互联网+业务