欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

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

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

下面使用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)運(yùn)行程序時(shí),會(huì)輸出這樣的結(jié)果:

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

這證明了Password字符串超過72字符的部分被截?cái)鄟G棄了。

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

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

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

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

相關(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)知識(shí),幫助大家更好的理解學(xué)習(xí),感興趣的朋友可以了解下
    2020-06-06
  • 怎樣制作“別人家的”Chrome插件

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

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

    詳解提升場(chǎng)景文本識(shí)別中的語言模型

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

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

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

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

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

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

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

    WCF配置心得

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

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

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

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

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

最新評(píng)論