亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

密碼哈希函數(shù) Bcrypt的最大密碼長度限制詳解

 更新時間:2017年03月11日 10:18:11   作者:資深架構(gòu)師  
這篇文章主要介紹了密碼哈希函數(shù) Bcrypt的最大密碼長度限制詳解的相關(guān)資料,需要的朋友可以參考下

密碼哈希函數(shù) Bcrypt的最大密碼長度限制

Bcrypt是一個很流行的密碼哈希算法,是Niels Provos和DavidMazières基于Blowfish加密算法設(shè)計的密碼哈希算法,于1999年在USENIX協(xié)會上提交。Bcrypt在設(shè)計上包含了一個鹽Salt來防御彩虹表攻擊,還提供了一種自適應(yīng)功能,可以隨著時間的推移,通過增加迭代計數(shù)以使其執(zhí)行更慢,使得即便在增加計算能力的情況下,Bcrypt仍然能保持抵抗暴力攻擊。

Bcrypt是OpenBSD和SUSE Linux等操作系統(tǒng)默認的密碼哈希算法。但是在使用Bcrypt算法的實現(xiàn)時,要注意它有最大密碼長度限制,通常為50~72字符,準確的長度限制取決于具體的Bcrypt實現(xiàn)。超過最大長度的密碼將被截斷。

下面使用spring Security的BCryptPasswordEncoder為例:

BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder();
// 72 字符
String password1 = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
// 73 字符
String password2 = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab";
String encodedPassword1 = passwordEncoder.encode(password1);
boolean matches = passwordEncoder.matches(password2, encodedPassword1);
System.out.println("encodedPassword1: " + encodedPassword1);
System.out.println("matches: " + matches);

當(dāng)運行程序時,會輸出這樣的結(jié)果:

encodedPassword1: $2a$10$A5OpVKgjEZzmy6UNsqzkjuG2xGET1wp3b/9ET5dz/tHQ3eRvyXSSO
matches: true

這證明了Password字符串超過72字符的部分被截斷丟棄了。

要解決Bcrypt密碼算法72字符長度限制的問題,可以這樣:

先使用SHA-256算法對字符串進行加密,再使用Bcrypt算法加密,用偽碼示意如下:

hashpw(sha256('password'), salt);

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

相關(guān)文章

  • 淺談架構(gòu)模式變遷之從分層架構(gòu)到微服務(wù)架構(gòu)

    淺談架構(gòu)模式變遷之從分層架構(gòu)到微服務(wù)架構(gòu)

    一般地,架構(gòu)模式大致可以分成兩類,單體架構(gòu)(monolithic architecture)和分布式架構(gòu)(distributed architecture)。
    2021-05-05
  • 趣味函數(shù)式編程圣經(jīng)

    趣味函數(shù)式編程圣經(jīng)

    這篇文章主要介紹了函數(shù)式編程的的相關(guān)資料,有趣的講解了函數(shù)式編程的相關(guān)知識,幫助大家更好的理解學(xué)習(xí),感興趣的朋友可以了解下
    2020-06-06
  • 怎樣制作“別人家的”Chrome插件

    怎樣制作“別人家的”Chrome插件

    Chrome插件有很多實用API可以讓我們使用,通過Chrome插件我們還可以做很多的事情,例如翻譯網(wǎng)頁文字等。本文將教你怎樣制作“別人家的”Chrome插件,感興趣的小伙伴一起來看看吧
    2021-08-08
  • 詳解提升場景文本識別中的語言模型

    詳解提升場景文本識別中的語言模型

    語言模型即根據(jù)當(dāng)前語境的上下文推斷當(dāng)前句子的意思。文本圖像中包含兩層信息:視覺紋理信息和語言信息。由于單純根據(jù)視覺紋理信息進行文字識別缺少了對上下文的字符語義信息的挖掘,時常會導(dǎo)致錯誤的文本識別結(jié)果(之后會詳細說明)。
    2021-05-05
  • nasm實現(xiàn)的用vmware運行自做的linux啟動盤的引導(dǎo)代碼

    nasm實現(xiàn)的用vmware運行自做的linux啟動盤的引導(dǎo)代碼

    這個小的代碼的編寫和運行還是能讓自己對系統(tǒng)啟動有一個更深的認識,不過有個不懂的就是怎么用ISO鏡像文件啟動,怎么將引導(dǎo)代碼寫入ISO鏡像文件,依然沒有找到很好的方法解決
    2013-04-04
  • 300行代碼讓外婆實現(xiàn)語音搜索購物功能

    300行代碼讓外婆實現(xiàn)語音搜索購物功能

    這篇文章主要介紹了300行代碼讓外婆實現(xiàn)語音搜索購物功能,本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-03-03
  • 分享幾個快速提升工作效率的小工具(Listary等)

    分享幾個快速提升工作效率的小工具(Listary等)

    這篇文章主要介紹了分享幾個快速提升工作效率的小工具(Listary等),本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-04-04
  • WCF配置心得

    WCF配置心得

    經(jīng)過一整天的折騰,總算對手動配置WCF有些感覺了,于是寫篇博文記錄一下心得
    2013-01-01
  • Unity3D中shader 輪廓描邊效果實現(xiàn)代碼

    Unity3D中shader 輪廓描邊效果實現(xiàn)代碼

    這篇文章主要介紹了Unity3D中shader 輪廓描邊效果的相關(guān)資料,需要的朋友可以參考下
    2017-03-03
  • Windows系統(tǒng)安裝使用Git的詳細教程

    Windows系統(tǒng)安裝使用Git的詳細教程

    這篇文章主要介紹了Windows系統(tǒng)安裝使用Git的詳細教程,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-04-04

最新評論