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。

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