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算法的基础使用相关推荐

  1. 清华校友斩获ACM博士论文奖!相关研究为自动驾驶新算法奠定基础

    点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 明敏 萧箫 发自 凹非寺 量子位 报道 | 公众号 QbitAI 今 ...

  2. R语言构建随机森林模型randomForest分类模型并评估模型在测试集和训练集上的效果(accuray、F1、偏差Deviance):随机森林在Bagging算法的基础上加入了列采样(分枝特征随机)

    R语言构建随机森林模型randomForest分类模型并评估模型在测试集和训练集上的效果(accuray.F1.偏差Deviance):随机森林在Bagging算法的基础上加入了列采样(分枝特征随机) ...

  3. 机器学习算法的基础知识

    机器学习算法的基础知识 1.评估指标 2.偏差与方差(过拟合与欠拟合) 3.正则化(解决过拟合) 4.梯度下降算法(算法优化方式) 5.数据不平衡 1.评估指标 预测值 0 1 实际 0 TN FP ...

  4. 数据结构之排序算法:基础概念

    排序算法:基础概念 思维导图: 排序的定义: 算法的稳定性: 内部排序和外部排序: 思维导图: 排序的定义: 算法的稳定性: 内部排序和外部排序:

  5. 《算法零基础100讲》(第30讲) 概率与统计

    文章目录 零.写在前面 一.概念定义 二.题目描述 三.算法详解 四.源码剖析 五.推荐专栏 六.习题练习 零.写在前面   这是<算法零基础100讲> 专栏打卡学习的第 30 天了.如果 ...

  6. Raft 共识算法1-Raft基础

    Raft 共识算法1-Raft基础 Raft算法中译版地址:http://www.redisant.cn/etcd/contact 英原论文地址:https://raft.github.io/raft ...

  7. 软件的基本是要处理好”算法“及其基础(一)流-字-字符(包括某个数字、字母、符号和某个汉字等)-字符串-字节动态数组-字节-整数之间的转化关系和算法

    目录 软件的基本是要处理好"算法"及其基础(一): 流->计算机字->字符(包括某个数字.字母.符号和某个汉字等)->字符串->字节动态数组->字节- ...

  8. 数据结构与算法之基础概述

    目录 数据结构和算法的重要性 数据结构概述 逻辑结构 存储结构 算法概述 如何理解"大O记法" 时间复杂度 空间复杂度 数据结构和算法的重要性 算法是程序的灵魂,优秀的程序可以在海 ...

  9. 算法设计与分析——算法学基础(三):渐进记号

    分类目录:<算法设计与分析>总目录 相关文章: 算法学基础(一):算法学概述 算法学基础(二):分析算法 算法学基础(三):渐进记号 第<算法学基础(二):分析算法>中定义了算 ...

最新文章

  1. mysql5.7数据库快照_lvm快照备份数据库(Mysql5.7)
  2. 解决Lync联盟用户之间只能IM聊天不能进行A/V呼叫问题
  3. Shift-And / Shift-Or
  4. linux+date+命令+作业,Linux date命令的使用
  5. 史上最全Python课程整理——我是如何从编程小白到Python研发工程师的
  6. svn cvs git的区别
  7. when save is performed, registered callback will be called one by one
  8. java 二维数组
  9. 手把手教安装java开发环境_手把手教你配置java开发环境-java环境变量设置
  10. (6)<a>标签如何实现点击既不刷新也不跳转的功能
  11. gaussian09使用教程linux,Gaussian 09 GaussView5.0使用教程.ppt
  12. 单片机音乐倒数计时器c语言,音乐倒数计时器单片机课程设计报告
  13. WinForGIFSicle 1.0.0.1 免费开源版,基于GIFSicle的开源可视化批量GIF压缩工具
  14. 小程序倒计时页面跳转
  15. github-production-release Git-2.28.0-64-bit
  16. JavaWeb网上图书商城
  17. 1 月 9 日:iPhone 问世
  18. 高德地图大头针功能_【iOS】高德地图MAMapKit的使用:地图显示、添加大头针、导航、定位功能介绍...
  19. 相关分析-5种常用相关分析方法
  20. java接口可以写方法体吗_JDK1.8接口中可以写方法体

热门文章

  1. 第一届创享杯 服务器部分题解
  2. Airtest入门篇-2简单使用
  3. Spring IoC容器以及Bean的创建过程
  4. JAVA毕业设计会展中心招商服务平台计算机源码+lw文档+系统+调试部署+数据库
  5. chrome的timeline中stalled问题解析
  6. 基于JAVA大学生心理咨询系统计算机毕业设计源码+系统+lw文档+部署
  7. 视觉里程计的重定位问题1——SVO的重定位部分
  8. 上市遭破发,披着“光芒”的维信金科缘何不受股市青睐?
  9. 王者荣耀测试自己本命英雄软件,王者荣耀本命英雄测试 本命英雄测试题
  10. 2019年Java就业前景如何