前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >BCryptPasswordEncoder加密和匹配的原理 和 springsecurity 的 rememberme原理

BCryptPasswordEncoder加密和匹配的原理 和 springsecurity 的 rememberme原理

作者头像
知识浅谈
发布2022-05-11 08:47:30
7360
发布2022-05-11 08:47:30
举报
文章被收录于专栏:分享学习

只知道这个的用法,心里着实难受,所以看了看底层,简单做下总结。

BCryptPasswordEncoder算法和shiro的区别: 其实和shiro中区别就是shiro 中的salt是自己指定的,然后存到数据库,BCryptPasswordEncoder加密算法是随机生成的和加密后的密码一起拼接到一起存到数据库。

举个我调试的时候的例子:

注册时候调用encode(明文密码)

首先第一次注册的时候,会从后台先获取随机盐VM/wbXrA4UYbITsQKOHNF. 这个每一次的不一定因为随机的。 对明文密码进行加密,我输入的密码 123 用上边的随机盐加密后得到HBp2Bmiej/q/iggq/g6DMwcGlh3wxwi , 然后拼接到一起 2a10

登陆的时候matches(明文密码,数据库中加密的密码)

之后登录的时候除了前端传过来的明文密码,从数据库中找到加密的密码,因为这个加密的密码中有加密时候的盐。 从加密的密码中把盐抽取出来VM/wbXrA4UYbITsQKOHNF. ,然后2a10

rememberme原理

当设置这个rememberme之后,登录的时候会生成JSESSION 和 remember-me两个字段给前端。

remember的生成过程

Base64(Base64(用户名):Base64(过期时间):Base64(用户名和密码和过期时间加密))

remember的使用过程

判断是否有这个remember-me字段,有的话,先整体解码,再对用户名 和过期时间 进行Base64解码,从数据库获得密码,然后 new = Base64(Base64(用户名):Base64(过期时间):Base64(用户名和数据库获得密码和过期时间加密)),和前端的remeber-me 字符串进行匹配,相等之后就是登录状态。

再具体的请各位继续探索,学无止境。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-05-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 注册时候调用encode(明文密码)
  • 登陆的时候matches(明文密码,数据库中加密的密码)
  • rememberme原理
    • remember的生成过程
      • remember的使用过程
      相关产品与服务
      数据库
      云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档