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

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

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

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

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

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

之后登录的时候除了前端传过来的明文密码,从数据库中找到加密的密码,因为这个加密的密码中有加密时候的盐。
从加密的密码中把盐抽取出来VM/wbXrA4UYbITsQKOHNF. ,然后$2a$10$(这个都是在根据前端传来的明文密码生成加密密码的时候经过一些判断加上的) +盐 + 用盐和前端传来的明文密码生成新的加密密码
然后用新的加密密码和 数据库中的加密密码进行匹配查看是否相等,其实这时候如果密码正确,两个加密密码的字符串是相等的。

rememberme原理

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

remember的生成过程

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

remember的使用过程

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

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

BCryptPasswordEncoder加密和匹配的原理 和 springsecurity 的 rememberme原理相关推荐

  1. BCryptPasswordEncoder加密与MD5加密的区别

    MD5 加密说明 MD5(Message Digest Algorithm 5)中文名为消息摘要算法第五版,是计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护. MD5作为一种常用的摘要 ...

  2. 【密码学Sage代码】椭圆曲线加密/解密(基于《密码编码学与网络安全——原理与实践(第七版)》)

    [密码学Sage代码]椭圆曲线加密/解密(基于<密码编码学与网络安全--原理与实践(第七版)>) 教材内容: 实践的Sage代码: #[静水流深Sage代码]使用椭圆曲线密码体制进行加密/ ...

  3. MD5加密原理解析及OC版原理实现

    MD5加密原理解析及OC版原理实现 一.MD5算法基础概念 MD5算法是Hash算法的一种,叫做讯息摘要演算法.所谓摘要,从字面意思理解,是指内容的大概.在MD5算法中,这个摘要是指将任意数据映射成一 ...

  4. 组态王7.5SP4版软件与加密狗匹配开发版+运行版使用分享

    注意,电脑操作系统用户必须是管理用户才能正常使用 1.先按装组态软件: 2.选择安装中文版本 3.按照下图的 1.2.3 项按顺序默认安装到完成 4.以下是默认安装目录(重要!!!!) 5.组态软件主 ...

  5. win2003与win2008启动原理及双启动的原理

    win2003与win2008启动原理及双启动的原理 最近经常有学生询问Win2008的启动相关问题以及早期Windows版本与vista或win2008并存时的启动问题,现在可以说正是处于操作系统新 ...

  6. 11旋转编码器原理_旋转编码器的原理是什么?增量式编码器和绝对式编码器有什么区别?...

    先给出结论,最重要的区别在于:增量式编码器没有记忆,断电重启必须回到参考零位,才能找到需要的位置,而绝对式编码器,有记忆,断电重启不用回到零位,即可知道目标所在的位置. 接下来细说一下,主要包含如下的 ...

  7. java中MVC原理详解,Spring MVC 原理总结

    1. 什么是MVC? MVC是一种架构模式 --- 程序分层,分工合作,既相互独立,又协同工作 MVC是一种思考方式 --- 需要将什么信息展示给用户? 如何布局? 调用哪些业务逻辑? MVC流程图如 ...

  8. mysql show 原理_mysql事务的实现原理

    此篇文章算是对mysql事务的一个总结,基本把mysql事务相关的知识点都涵盖到了,面试问来问去无非也就是这些,在了解这些之前我们先对mysql在执行的过程中  有一个整体的认识,如下图 如上图所示, ...

  9. 计算机自动连续工作的基础是存储程序原理,计算机的存储程序工作原理是什么...

    以下是我抄的,把流程图搞定就可以计算机的基本原理是:存储程序和程序控制.预先要把指挥计算机如何进行操作的指令序列(称为程序)和原始数据通过输入设备输送到计算机内存贮器中.每一条指令中明确规定了计算机从 ...

最新文章

  1. shell、javascript、python、tcl 等常用脚本语言
  2. java代码。继承。。。很戳我的心啊。。不太懂。super的真正用法
  3. [jQuery] jQuery中如何将数组转化为json字符串,然后再转化回来?
  4. 计算机网络技术俄罗斯方块,《The Tetris Effect》:这本新书讲述了俄罗斯方块的传奇故事...
  5. 云消防大数据_消防云大数据
  6. 【C++】C++类和对象
  7. 最简单的又炫的快捷菜单....喜欢的拿起就跑
  8. 二叉树遍历算法(递归实现+层次遍历)
  9. Python 面向对象 计算长方体、四棱锥的表面积和体积
  10. excel取消隐藏_猴哥讲述:对excel工作表进行隐藏和取消隐藏的操作行为
  11. 35岁前要培养的66种思维(中)
  12. Flashpaper序列号
  13. 移动端布局三种视口_移动H5的meta视口标签、弹性布局原则和背景图片适配
  14. 【备忘】 modbusTcp4个寄存器电力遥信遥控对应
  15. java 调用 oracle存储过程_java代码调用oracle存储过程
  16. 【Linux】命令每日一个
  17. null对象打印为什么是null?
  18. python生成loss/acc训练曲线
  19. 爬虫技术框架——Heritrix
  20. EOS RAM套路满满,你是因何而被套

热门文章

  1. “任意门”来了!全息投影瞬间转移身体,实时交互,还能“召回”去世亲友,售价40万
  2. 解决cannot resolve symbol “xxxx”的问题
  3. 互联网赚钱:普通人月入上万的秘密,连载4
  4. 视图中干嘛不能用Order by排序
  5. 校招linux面试题,2013华为校招机试与面试题整理
  6. 第四十六章 使用 ^SystemPerformance 监视性能 - 生成 ^SystemPerformance 性能报告
  7. python中close_Python pool.close方法代码示例
  8. 《新概念》英语的学习方法
  9. 计算机怎么选购配置型号,怎样选购笔记本电脑配置
  10. 爬豆瓣正在热映和即将上映电影信息