最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

BCryptPasswordEncoder加密與MD5加密的區(qū)別及說明

 更新時間:2023年08月25日 11:42:26   作者:無奈的碼農(nóng)  
這篇文章主要介紹了BCryptPasswordEncoder加密與MD5加密的區(qū)別及說明,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

MD5加密說明

MD5(Message Digest Algorithm 5)中文名為消息摘要算法第五版,是計算機(jī)安全領(lǐng)域廣泛使用的一種散列函數(shù),用以提供消息的完整性保護(hù)。

MD5作為一種常用的摘要算法(或指紋算法),其具有以下幾個重要的特點(diǎn)(個人觀點(diǎn)):

輸入任意長度信息,輸出長度固定:

  • MD5 可輸入任意長度的信息,其輸出均為128位(bit)固定長度的二進(jìn)制數(shù)據(jù)。

運(yùn)算速度快:

  • MD5的運(yùn)算均為32位 與、或、非、位移等位運(yùn)算,因此其運(yùn)算速率快,幾乎不消耗CPU時間。

不可逆:

  • 根據(jù)MD5的的散列結(jié)果,無法計算出原始數(shù)據(jù)(查字典除外)。

碰撞性:

  • 原始數(shù)據(jù)與其MD5散列結(jié)果并非一一對應(yīng),存在多個原始數(shù)據(jù)的MD5結(jié)果相同的可能性。

不安全:

  • 2011年,RFC 6151 禁止MD5用作密鑰散列消息認(rèn)證碼。
  • MD5計算結(jié)果一般為長度為32的字符串,偶爾也會遇到長度為16的字符串,MD5散列結(jié)果是128位(bit)固定長度的二進(jìn)制數(shù)據(jù),也就是128個0/1的二進(jìn)數(shù)據(jù)。

2011年后MD5加密算法可以被反推出來明文,被破解,已經(jīng)不推薦使用

案例使用

1.字符串

//加密為字符串返回	
DigestUtils.md5DigestAsHex("123456".getBytes());
//結(jié)果為:e10adc3949ba59abbe56e057f20f883e

2.byte[]字節(jié)返回

//加密字節(jié)返回
DigestUtils.md5Digest("123456".getBytes());
//結(jié)果為:[B@49476842

3.在字符串后追加加密字符返回StringBuilder

StringBuilder stringBuilder1 = DigestUtils.appendMd5DigestAsHex(bytes,new StringBuilder("123456"));
//結(jié)果:1234564280d89a5a03f812751f504cc10ee8a5

解密的話,在java中還沒有提供方法,但是有些網(wǎng)站是可以對MD5進(jìn)行解密的

4. 如果對字符換加密過的字符串再次進(jìn)行加密,則會出現(xiàn)一樣的加密結(jié)果。

案例:

BCryptPasswordEncoder說明

BCrypt 是一種密碼散列函數(shù),即單向函數(shù)。

  • 您無法解密 BCrypt 哈希,就像您無法從雞肉麥塊返回原始雞肉一樣。
  • 您只能驗(yàn)證兩個 BCrypt 哈希值是否相同,從而驗(yàn)證提供的密碼是否與原始密碼匹配。

一個典型的解決方案是向用戶發(fā)送一次性密碼重置鏈接,使用秘密問題或其他一些確認(rèn)用戶身份的信息讓他們設(shè)置新密碼。

且每次加密過的值都不一樣

案例使用

1.多次執(zhí)行,結(jié)果不一樣

public static void main(String[] args) {
		String str = "123456";
		BCryptPasswordEncoder bCryptPasswordEncoder = new BCryptPasswordEncoder();
		String encode = bCryptPasswordEncoder.encode(str);
		System.out.println(encode);
		String encode1 = bCryptPasswordEncoder.encode(str);
		System.out.println(encode1);
}

結(jié)果:

2.對加密過的字符和原始數(shù)據(jù)進(jìn)行對比

案例:

public static void main(String[] args) {
		String str = "123456";
		BCryptPasswordEncoder bCryptPasswordEncoder = new BCryptPasswordEncoder();
		String encode = bCryptPasswordEncoder.encode(str);
		System.out.println(encode);
		boolean matches1 = bCryptPasswordEncoder.matches(str, encode);
		System.out.println(matches1);
}

結(jié)果:

3.加密過的字符串直接與字符串對比

案例:

public static void main(String[] args) {
		String str = "123456";
		BCryptPasswordEncoder bCryptPasswordEncoder = new BCryptPasswordEncoder();
		String encode = bCryptPasswordEncoder.encode(str);
		boolean matches = encode.matches(str);
		System.out.println(encode);
		System.out.println(matches);
	}

結(jié)果:

由于str已經(jīng)被BCryptPasswordEncoder 加密過,再次使用加密過的matches對比,是不一樣的,加密過的str是一個新的對象encode ,新的對象encode 對比str,肯定是不一樣的,則會返回false。

整理:

//另外BCryptPasswordEncoder的使用:
//加密:
bcryptPasswordEncoder.encoder(password)
//比較:
bcrytPasswordEncoder.matches(rawPassword,encodedPassword)

總結(jié)

以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 重新生成.iml和.idea文件實(shí)現(xiàn)方式

    重新生成.iml和.idea文件實(shí)現(xiàn)方式

    這篇文章主要介紹了重新生成.iml和.idea文件實(shí)現(xiàn)方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2026-03-03
  • Java?synchronized關(guān)鍵字性能考量及優(yōu)化探索

    Java?synchronized關(guān)鍵字性能考量及優(yōu)化探索

    這篇文章主要為大家介紹了Java?synchronized關(guān)鍵字性能考量及優(yōu)化探索示例分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-12-12
  • Spring Boot 3.0升級指南

    Spring Boot 3.0升級指南

    這篇文章主要為大家介紹了Spring Boot 3.0升級指南,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-02-02
  • idea如何解決commit代碼時一直code Analyze加載的問題

    idea如何解決commit代碼時一直code Analyze加載的問題

    文章介紹了解決Git提交代碼時出現(xiàn)codeAnalyze加載卡頓問題的方法,即關(guān)閉IDEA中的相關(guān)設(shè)置選項(xiàng),作者分享個人經(jīng)驗(yàn),希望對大家有所幫助,并鼓勵支持腳本之家
    2025-01-01
  • Java實(shí)現(xiàn)實(shí)時視頻轉(zhuǎn)播的代碼示例

    Java實(shí)現(xiàn)實(shí)時視頻轉(zhuǎn)播的代碼示例

    這篇文章主要給大家詳細(xì)介紹了Java如何實(shí)現(xiàn)實(shí)時視頻轉(zhuǎn)播,文中通過代碼實(shí)例介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴可以自己動手試一試
    2023-09-09
  • java實(shí)現(xiàn)微信支付結(jié)果通知

    java實(shí)現(xiàn)微信支付結(jié)果通知

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)微信支付結(jié)果通知,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-01-01
  • SpringMVC全局異常處理小結(jié)

    SpringMVC全局異常處理小結(jié)

    在開發(fā)中,不管是dao層、service層還是controller層,都有可能拋出異常,在springmvc中,能將所有類型的異常處理從各處理過程解耦出來,既保證了相關(guān)處理過程的功能較單一,也實(shí)現(xiàn)了異常信息的統(tǒng)一處理和維護(hù),本文介紹SpringMVC全局異常處理,感興趣的朋友一起看看吧
    2024-03-03
  • java分割日期時間段代碼

    java分割日期時間段代碼

    這篇文章主要為大家詳細(xì)介紹了java分割日期時間段代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-09-09
  • java ConcurrentHashMap鎖分段技術(shù)及原理詳解

    java ConcurrentHashMap鎖分段技術(shù)及原理詳解

    這篇文章主要介紹了java ConcurrentHashMap鎖分段技術(shù)詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-07-07
  • 基于java中stack與heap的區(qū)別,java中的垃圾回收機(jī)制的相關(guān)介紹

    基于java中stack與heap的區(qū)別,java中的垃圾回收機(jī)制的相關(guān)介紹

    本篇文章小編將為大家介紹,基于java中stack與heap的區(qū)別,java中的垃圾回收機(jī)制的相關(guān)介紹,需要的可以參考一下
    2013-04-04

最新評論

兴义市| 彭泽县| 揭东县| 化州市| 淮北市| 泊头市| 那坡县| 东港市| 乐业县| 宜兰市| 泸西县| 岳池县| 伊通| 颍上县| 锦屏县| 清流县| 尼木县| 神池县| 铜陵市| 潍坊市| 华蓥市| 思茅市| 克东县| 垦利县| 大邑县| 昭平县| 金阳县| 黄大仙区| 金湖县| 安丘市| 滨州市| 汉中市| SHOW| 东乡| 乌什县| 临洮县| 甘德县| 屯门区| 谢通门县| 沿河| 班玛县|