SpringSecurity-12-PasswordEncoder密碼加密簡介

SpringSecurity-12-PasswordEncoder密碼加密簡介

為什么密碼加密?

國內的每一個開發(fā)社區(qū)在2011年發(fā)生過被黑客攻擊忘渔,盜取用戶信息舔腾,600多萬的明文密碼信息被盜取,大量用戶面臨著數據隱私泄露和數據安全的威脅甚纲。這警告了我們库正,一旦被黑客攻擊用戶賬號信息被盜曲楚,我們該如何減少用戶的損失,在我們開發(fā)者角度來看就是如何使得用戶的賬號密碼變得安全褥符。怎么讓用戶的密碼變得安全呢龙誊?那就是要對用戶的密碼存儲進行加密。

MD5加密

MD5信息摘要算法属瓣,是一種密碼散列函數载迄,可以生成一個128(16字節(jié))的散列值,用于保證信息傳輸的一致性抡蛙。但是MD5加密是不安全的护昧,現在可以很輕松進行解密。舉例說明不安全性粗截。

  • 在mysql控制臺輸入md5的加密惋耙,sql如下
SELECT?MD5(123456)

密碼加密后數據

  • 通過MD5加密以后,我們隨便找一個MD5解密的網站例如https://www.cmd5.com/熊昌,輸入加密后的密碼進行解密后就可以得到原始密碼

SpringSecurity的PasswordEncoder

SpringSecurity內置的密碼加密機制绽榛,使用的時候只需要PasswordEncode接口即可

public?interface?PasswordEncoder?{
?String?encode(CharSequence?rawPassword);
?boolean?matches(CharSequence?rawPassword,?String?encodedPassword);
?default?boolean?upgradeEncoding(String?encodedPassword)?{
??return?false;
?}

}

PasswordEncoder接口有三個方法:

  • String encode(CharSequence rawPassword)一般在用戶注冊和修改密碼的時候使用

    • rawPassword參數表示的是原始密碼
    • 輸出的String類型數據是加密后的不可被逆向的hash值
  • boolean matches(CharSequence rawPassword, String encodedPassword)用于校驗輸入密碼和加密和的密碼是否匹配

  • boolean upgradeEncoding(String encodedPassword)方法用意是在判斷密碼是否需要重新加密?true表示需要婿屹,false表示不需要灭美。

SpringSecurity的加密實現

SpringSecurity的加密實現實際上就是去實現PasswordEncoder,具體實現有如下

我們一般使用BCryptPasswordEncoder進行密碼加密昂利,它是一種鹽加密(不了解鹽加密的可以自行百度)届腐,我們測試以下鹽加密和MD5加密有何不同,具體代碼如下

@SpringBootTest
class?SpringSecurityLearn8ApplicationTests?{

????@Test
????void?contextLoads()?{

????????String?md5_one?=?DigestUtils.md5DigestAsHex("123456".getBytes());
????????String?md5_two?=?DigestUtils.md5DigestAsHex("123456".getBytes());

????????BCryptPasswordEncoder?encoder?=?new?BCryptPasswordEncoder();
????????String?password_one?=?encoder.encode("123456");
????????String?password_two?=?encoder.encode("123456");
????????System.out.println("md5_one:?"?+?md5_one);
????????System.out.println("md5_two:?"?+?md5_two);
????????System.out.println("password_one:?"?+?password_one);
????????System.out.println("password_two:?"?+?password_two);
????}

}

控制臺輸出結果如下,我們發(fā)現MD5加密兩次加密結果一樣蜂奸,因此很容易就可以進行解密犁苏,但是BCryptPasswordEncoder的兩次加密的結果不一樣,因此是不可逆加密扩所。

md5_one:?e10adc3949ba59abbe56e057f20f883e
md5_two:?e10adc3949ba59abbe56e057f20f883e
password_one:?$2a$10$tB9sjNF3ktIIzg9PQ8CaduauX3rRh7zsFADesQl2oXvmZ150xKZGS
password_two:?$2a$10$c1vMF3CVEw1ggwpPrH9KD.qq2mw2GVW8Tnq5f7XsC/6X6a67yTJjS

這就是BCryptPasswordEncoder加密的特性围详,每次加密產生一個隨機鹽,然后每次加密產生不同結果祖屏。

Bcrypt有四個變量:

  • saltRounds:正數助赞,表示哈希雜湊次數买羞,數值越高越安全,默認10次
  • password:明文密碼
  • slat:鹽嫉拐,一個128bits的隨機字符串哩都,長度為22字符
  • hash:精美Bcrypt加密的哈希結果

Bcrypt加密后的密碼三部分,使用$分割:

  • $2a表示Bcrypt算法
  • 10表示哈希雜湊次數
  • tB9sjNF3ktIIzg9PQ8Cadu表示隨機生成的鹽

如果您覺得本文不錯婉徘,歡迎關注,點贊,收藏支持,您的關注是我堅持的動力咐汞!

關注公眾號 springboot葵花寶典 我將持續(xù)更新盖呼,并且獲取我搜集的spingboot資料,謝謝化撕!

原創(chuàng)不易几晤,轉載請注明出處,感謝支持植阴!如果本文對您有用蟹瘾,歡迎轉發(fā)分享!

?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末掠手,一起剝皮案震驚了整個濱河市憾朴,隨后出現的幾起案子,更是在濱河造成了極大的恐慌喷鸽,老刑警劉巖众雷,帶你破解...
    沈念sama閱讀 218,546評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現場離奇詭異做祝,居然都是意外死亡砾省,警方通過查閱死者的電腦和手機,發(fā)現死者居然都...
    沈念sama閱讀 93,224評論 3 395
  • 文/潘曉璐 我一進店門混槐,熙熙樓的掌柜王于貴愁眉苦臉地迎上來编兄,“玉大人,你說我怎么就攤上這事声登『菰В” “怎么了?”我有些...
    開封第一講書人閱讀 164,911評論 0 354
  • 文/不壞的土叔 我叫張陵捌刮,是天一觀的道長碰煌。 經常有香客問我,道長绅作,這世上最難降的妖魔是什么芦圾? 我笑而不...
    開封第一講書人閱讀 58,737評論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮俄认,結果婚禮上个少,老公的妹妹穿的比我還像新娘洪乍。我一直安慰自己,他們只是感情好夜焦,可當我...
    茶點故事閱讀 67,753評論 6 392
  • 文/花漫 我一把揭開白布壳澳。 她就那樣靜靜地躺著,像睡著了一般茫经。 火紅的嫁衣襯著肌膚如雪巷波。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,598評論 1 305
  • 那天卸伞,我揣著相機與錄音抹镊,去河邊找鬼。 笑死荤傲,一個胖子當著我的面吹牛垮耳,可吹牛的內容都是我干的。 我是一名探鬼主播遂黍,決...
    沈念sama閱讀 40,338評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼终佛,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了雾家?” 一聲冷哼從身側響起铃彰,我...
    開封第一講書人閱讀 39,249評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎榜贴,沒想到半個月后豌研,有當地人在樹林里發(fā)現了一具尸體,經...
    沈念sama閱讀 45,696評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡唬党,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,888評論 3 336
  • 正文 我和宋清朗相戀三年鹃共,在試婚紗的時候發(fā)現自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片驶拱。...
    茶點故事閱讀 40,013評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡霜浴,死狀恐怖,靈堂內的尸體忽然破棺而出蓝纲,到底是詐尸還是另有隱情阴孟,我是刑警寧澤,帶...
    沈念sama閱讀 35,731評論 5 346
  • 正文 年R本政府宣布税迷,位于F島的核電站永丝,受9級特大地震影響,放射性物質發(fā)生泄漏箭养。R本人自食惡果不足惜慕嚷,卻給世界環(huán)境...
    茶點故事閱讀 41,348評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧喝检,春花似錦嗅辣、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,929評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至损俭,卻和暖如春蛙奖,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背杆兵。 一陣腳步聲響...
    開封第一講書人閱讀 33,048評論 1 270
  • 我被黑心中介騙來泰國打工外永, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人拧咳。 一個月前我還...
    沈念sama閱讀 48,203評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像囚灼,于是被迫代替她去往敵國和親骆膝。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,960評論 2 355

推薦閱讀更多精彩內容