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