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

Java通過BCrypt加密過程詳解

 更新時間:2019年07月17日 10:36:19   作者:bcombettter  
這篇文章主要介紹了Java通過BCrypt加密過程詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下

一、概述

在用戶模塊,對于用戶密碼的保護,通常都會進行加密。我們通常對密碼進行加密,然后存放在數據庫中,在用戶進行登錄的時候,將其輸入的密碼進行加密然后與數據庫中存放的密文進行比較,以驗證用戶密碼是否正確。

目前,MD5和BCrypt比較流行。相對來說,BCrypt比MD5更安全,但加密更慢。

二、使用BCrypt

首先,可以在官網中取得源代碼

然后通過Ant進行編譯。編譯之后得到jbcrypt.jar。也可以不需要進行編譯,而直接使用源碼中的java文件(本身僅一個文件)。
下面是官網的一個Demo。

public class BCryptDemo {
 public static void main(String[] args) {
   // Hash a password for the first time
     String password = "testpassword";
    String hashed = BCrypt.hashpw(password, BCrypt.gensalt());
    System.out.println(hashed);
  // gensalt's log_rounds parameter determines the complexity
  // the work factor is 2**log_rounds, and the default is 10
  String hashed2 = BCrypt.hashpw(password, BCrypt.gensalt(12));
 
  // Check that an unencrypted password matches one that has
  // previously been hashed
  String candidate = "testpassword";
  //String candidate = "wrongtestpassword";
  if (BCrypt.checkpw(candidate, hashed))
    System.out.println("It matches");
  else
  System.out.println("It does not match");
  }
}

在這個例子中,

BCrypt.hashpw(password, BCrypt.gensalt())

是核心。通過調用BCrypt類的靜態(tài)方法hashpw對password進行加密。第二個參數就是我們平時所說的加鹽。

BCrypt.checkpw(candidate, hashed)

該方法就是對用戶后來輸入的密碼進行比較。如果能夠匹配,返回true。

三、加鹽

如果兩個人或多個人的密碼相同,加密后保存會得到相同的結果。破一個就可以破一片的密碼。如果名為A的用戶可以查看數據庫,那么他可以觀察到自己的密碼和別人的密碼加密后的結果都是一樣,那么,別人用的和自己就是同一個密碼,這樣,就可以利用別人的身份登錄了。

其實只要稍微混淆一下就能防范住了,這在加密術語中稱為“加鹽”。具體來說就是在原有材料(用戶自定義密碼)中加入其它成分(一般是用戶自有且不變的因素),以此來增加系統(tǒng)復雜度。當這種鹽和用戶密碼相結合后,再通過摘要處理,就能得到隱蔽性更強的摘要值。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • 解讀yml文件中配置時間類型的轉換方式

    解讀yml文件中配置時間類型的轉換方式

    這篇文章主要介紹了yml文件中配置時間類型的轉換方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • java實現簡單銀行ATM系統(tǒng)

    java實現簡單銀行ATM系統(tǒng)

    這篇文章主要為大家詳細介紹了java實現簡單銀行ATM系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • Java中replace的用法實例講解

    Java中replace的用法實例講解

    這篇文章主要給大家介紹了關于Java中replace用法的相關資料,Java中的replace方法是用于字符串替換的方法,它可以接受兩個參數,第一個參數是需要被替換的字符串,第二個參數是替換后的字符串,需要的朋友可以參考下
    2024-04-04
  • Java調用MySQL存儲過程并獲得返回值的方法

    Java調用MySQL存儲過程并獲得返回值的方法

    這篇文章主要介紹了Java調用MySQL存儲過程并獲得返回值的方法,實例分析了java實現MySQL存儲過程的相關技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-07-07
  • spring boot中controller的使用及url參數的獲取方法

    spring boot中controller的使用及url參數的獲取方法

    這篇文章主要介紹了spring boot中controller的使用及url參數的獲取方法,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2018-01-01
  • Spring boot跨域設置實例詳解

    Spring boot跨域設置實例詳解

    這篇文章主要介紹了Spring boot跨域設置實例詳解,簡單介紹了跨域的定義,原因,使用場景及解決方案,具有一定參考價值,需要的朋友可以了解下。
    2017-11-11
  • Java使用OpenFeign管理多個第三方服務調用

    Java使用OpenFeign管理多個第三方服務調用

    最近開發(fā)了一個統(tǒng)一調度類的項目,需要依賴多個第三方服務,這些服務都提供了HTTP接口供我調用。感興趣的可以了解一下
    2021-06-06
  • 一篇文章帶你入門Java?UML的類圖

    一篇文章帶你入門Java?UML的類圖

    這篇文章主要為大家詳細介紹了Java?UML的類圖,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-02-02
  • 如何解決idea的Translation插件google翻譯無法使用問題

    如何解決idea的Translation插件google翻譯無法使用問題

    這篇文章主要介紹了如何解決idea的Translation插件google翻譯無法使用問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • @RequestAttribute和@RequestParam注解的區(qū)別及說明

    @RequestAttribute和@RequestParam注解的區(qū)別及說明

    這篇文章主要介紹了@RequestAttribute和@RequestParam注解的區(qū)別及說明,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-05-05

最新評論