BCrypt算法的基础使用
BCrypt算法是一种基于哈希算法的算法,所以,这种算法也是不可逆的!
应用场景:用于存放密码,卡号等不可解密的数据信息
在开发实现中,通常,可以使用配置类中的@Bean方法来创建BCryptPasswordEncoder对象,此对象将是由Spring进行管理的,当需要使用时,自动装配即可,例如:
@Configuration
public class SecurityConfiguration {@Beanpublic PasswordEncoder passwordEncoder() {return new BCryptPasswordEncoder();}}
@Service
public class AdminServiceImpl implements IAdminService {@Autowiredprivate PasswordEncoder passwordEncoder;}
下面我们来看看BCrypt的使用:
如上我们编写了一个测试类,类中方法testEncode()和testMaches()分别实现了密码加密和密码匹配
当我们执行第一个方法testEncode()得到如下结果:
我们在多执行几次,看看结果会有什么不同:
对此我们可以很清楚的看到,密码并未改变都是123456,而加密后的密文每一次的结果都不同的.
为什么会出现这种情况?
这是因为
通过BCrypt算法进行编码后的结果,长度固定为60字符。
使用同一个原文进行反复编码,每次得到的结果都是不同的,因为在编码过程中,BCrypt使用了随机的盐,并且,使用的盐也作为编码结果的一部分保存了下来。
BCrypt算法的加盐机制:
随机生成一个含有29个字符的字符串,并且会与密码一起合并进行最终的密文生成
每一次生成的盐的值都是不同的
且密码不可逆,是通过加密后和密文比较来确认
下面我们执行一下testMaches()方法看看生成的不同密文是否和原密码都是匹配的:
可以看出生成的不同密文最终的匹配结果都是true.
所以,以上就是BCrypt算法的一些基础使用,希望可以帮助到大家!
BCrypt算法的基础使用相关推荐
- 清华校友斩获ACM博士论文奖!相关研究为自动驾驶新算法奠定基础
点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 明敏 萧箫 发自 凹非寺 量子位 报道 | 公众号 QbitAI 今 ...
- R语言构建随机森林模型randomForest分类模型并评估模型在测试集和训练集上的效果(accuray、F1、偏差Deviance):随机森林在Bagging算法的基础上加入了列采样(分枝特征随机)
R语言构建随机森林模型randomForest分类模型并评估模型在测试集和训练集上的效果(accuray.F1.偏差Deviance):随机森林在Bagging算法的基础上加入了列采样(分枝特征随机) ...
- 机器学习算法的基础知识
机器学习算法的基础知识 1.评估指标 2.偏差与方差(过拟合与欠拟合) 3.正则化(解决过拟合) 4.梯度下降算法(算法优化方式) 5.数据不平衡 1.评估指标 预测值 0 1 实际 0 TN FP ...
- 数据结构之排序算法:基础概念
排序算法:基础概念 思维导图: 排序的定义: 算法的稳定性: 内部排序和外部排序: 思维导图: 排序的定义: 算法的稳定性: 内部排序和外部排序:
- 《算法零基础100讲》(第30讲) 概率与统计
文章目录 零.写在前面 一.概念定义 二.题目描述 三.算法详解 四.源码剖析 五.推荐专栏 六.习题练习 零.写在前面 这是<算法零基础100讲> 专栏打卡学习的第 30 天了.如果 ...
- Raft 共识算法1-Raft基础
Raft 共识算法1-Raft基础 Raft算法中译版地址:http://www.redisant.cn/etcd/contact 英原论文地址:https://raft.github.io/raft ...
- 软件的基本是要处理好”算法“及其基础(一)流-字-字符(包括某个数字、字母、符号和某个汉字等)-字符串-字节动态数组-字节-整数之间的转化关系和算法
目录 软件的基本是要处理好"算法"及其基础(一): 流->计算机字->字符(包括某个数字.字母.符号和某个汉字等)->字符串->字节动态数组->字节- ...
- 数据结构与算法之基础概述
目录 数据结构和算法的重要性 数据结构概述 逻辑结构 存储结构 算法概述 如何理解"大O记法" 时间复杂度 空间复杂度 数据结构和算法的重要性 算法是程序的灵魂,优秀的程序可以在海 ...
- 算法设计与分析——算法学基础(三):渐进记号
分类目录:<算法设计与分析>总目录 相关文章: 算法学基础(一):算法学概述 算法学基础(二):分析算法 算法学基础(三):渐进记号 第<算法学基础(二):分析算法>中定义了算 ...
最新文章
- mysql5.7数据库快照_lvm快照备份数据库(Mysql5.7)
- 解决Lync联盟用户之间只能IM聊天不能进行A/V呼叫问题
- Shift-And / Shift-Or
- linux+date+命令+作业,Linux date命令的使用
- 史上最全Python课程整理——我是如何从编程小白到Python研发工程师的
- svn cvs git的区别
- when save is performed, registered callback will be called one by one
- java 二维数组
- 手把手教安装java开发环境_手把手教你配置java开发环境-java环境变量设置
- (6)<a>标签如何实现点击既不刷新也不跳转的功能
- gaussian09使用教程linux,Gaussian 09 GaussView5.0使用教程.ppt
- 单片机音乐倒数计时器c语言,音乐倒数计时器单片机课程设计报告
- WinForGIFSicle 1.0.0.1 免费开源版,基于GIFSicle的开源可视化批量GIF压缩工具
- 小程序倒计时页面跳转
- github-production-release Git-2.28.0-64-bit
- JavaWeb网上图书商城
- 1 月 9 日:iPhone 问世
- 高德地图大头针功能_【iOS】高德地图MAMapKit的使用:地图显示、添加大头针、导航、定位功能介绍...
- 相关分析-5种常用相关分析方法
- java接口可以写方法体吗_JDK1.8接口中可以写方法体
热门文章
- 第一届创享杯 服务器部分题解
- Airtest入门篇-2简单使用
- Spring IoC容器以及Bean的创建过程
- JAVA毕业设计会展中心招商服务平台计算机源码+lw文档+系统+调试部署+数据库
- chrome的timeline中stalled问题解析
- 基于JAVA大学生心理咨询系统计算机毕业设计源码+系统+lw文档+部署
- 视觉里程计的重定位问题1——SVO的重定位部分
- 上市遭破发,披着“光芒”的维信金科缘何不受股市青睐?
- 王者荣耀测试自己本命英雄软件,王者荣耀本命英雄测试 本命英雄测试题
- 2019年Java就业前景如何