Jump to content
七龙的秘密基地
Search In
  • More options...
Find results that contain...
Find results in...

SpringSecurity中的强哈希加密算法BCryptPasswordEncoder


elstp_gf@foxmail.com

113 views

 Share

当时密码加密我还是停留在盐,第一次用Spring Security的时候,接触到了 BCryptPasswordEncoder  这个加密,当时非常好奇这个算法,因为它每次加密的密码都是不一样的,动态的

 

image.thumb.png.3c17e2132dc261c53a858e14bb0f0854.png

拆开发现,两个关键方法 BCrypt.hashpwBCrypt.gensalt

仔细看能发现这个加密算法是用的强哈希+盐+密钥,默认情况是的密码,因为使用到了哈希,所以是密码是不可逆的,这样就算你密码泄露了别人也不知道密码明文是什么

gensalt

有没有很熟悉 这个盐和生成的密码前缀是不是有点像,生成了一个带盐的哈希

image.png.baf120e9ccd327f0dcafab4676df58db.png

再看hashpw 里面一大堆代码都是在校验密文

image.thumb.png.d33b5708c04ed084c0f0ac6949a88685.png

注意看,这里已经开始截取上面生成的哈希盐了

String real_salt = salt.substring(off + 3, off + 25);

最后工序就是解码base64和编码64

然后生成的结果就是我们现在看见的,同一个密码,每一次都不一样的密文

image.thumb.png.5b5e65ef77b400682d71640ed91719a4.png

 

这个是一个非常强大的好用的加密方法,反正我是比较喜欢的!因为都不需要在数据库里把盐给存起来

 Share

0 Comments


Recommended Comments

There are no comments to display.

×
×
  • Create New...