Spring Security Bcrypt算法小結

Bcrypt本身是一種Hash算法

Bcrypt密文由以下基本部分組成

$2a$10$e9lBHmVW8KafMUzRwtPcO./yHO.0SO5OzfHLJfPK1psT3rChKvpw.
  • 0: 固定字符 $
  • 1-2: 2a 表示算法版本
  • 3: 固定字符 $
  • 4-5: 10 輪詢加密次數 2^10 = 1024 次,數值範圍[4,32]
  • 6: 固定字符 $
  • 7-28: 16-byte(128-bit)的salt,使用utf-8的編碼格式
  • 29-最後:最終生成的hash值
  1. 每次執行 BCryptPasswordEncoder.encode("xxx")生成的值都不一樣,是由於Slat每次都會重新隨機生成
  2. 密碼校驗邏輯是:從DB的passwd中解析出Slat,在對明文的passwd計算hash,最終在組合稱爲一個加密密碼,將兩次生成密碼的機型比較。

Bcrypt 算法將 salt 隨機並混入最終加密後的密碼,驗證時也無需單獨提供之前的 salt。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章