bcrypt加密算法,bcrypt加密解密原理
目录
简介哈希加密原理加密过程校验过程哈希与讯息摘要5的区别示例1、引入依赖2、写测试类3、测试密文含义
简介
本文用示例介绍使用对密码进行加密的算法:bcrypt。
哈希是一种自带盐值(自动加盐)的加密方案。
bcrypt加密原理
加密过程
先随机生成盐盐跟密码进行哈希注意
对于同一个密码,每次生成的混杂是不同的混杂中包含了盐
校验过程
从混杂中取出盐盐跟密码进行混杂计算将得到的混杂跟数据库中提取的的混杂进行比对返回布尔代数学体系的类型:对/错
bcrypt与md5的区别
项md5bcrypt密文长度32位60位安全性安全性差。密码相同时,加密后密文一样。提升安全性的方案:加密前生成随机的盐值(字符串),将它与密码拼接,然后再使用讯息摘要5加密。安全性好。密码相同时,生成的密文是不一样的。(因为它自动生成随机盐值)加密耗时短略长
示例
1、引入依赖
pom.xml加入如下依赖:
依赖关系groupIdorg.mindrot/groupId artifact id JB crypt/artifact id版本0.4/版本/依赖关系总的pom.xml:
?可扩展标记语言版本=1.0 编码=UTF八号?项目xmlns= http://maven。阿帕奇。org/POM/4。0 .0 xmlns : xsi= http://www。w3。org/2001/XML schema-instance xsi :架构位置= http://maven。阿帕奇。org/POM/4。0 .0 https://maven.apache.org/xsd/maven-4.0.0.xsd模型版本4 .0 .0/模型版本父groupIdorg.springframework.boot/groupId人工弹簧-启动-母公司/version2.3.0.RELEASE/version人工弹簧相对路径/。-从存储库查找父级-/父级groupIdcom.example/groupId artifact id demo _ spring boot/artifact id版本0 .0 .1-快照/版本名称演示_弹簧靴/名称描述跳羚的演示项目/描述属性java。版本1.8/java。版本/属性依赖项依赖项groupIdorg.springframework.boot/groupId artifact id spring-boot-starter-web/artifact id/依赖项依赖项groupIdorg.mindrot/groupId artifact id JB crypt/artifact id版本0.4/版本/依赖项/依赖项构建插件groupIdorg.springframework.boot/groupId artifactId spring-boot-maven-plugin/artifactId version2.3.0.RELEASE/version/plugin/插件/插件/插件/插件
2、写测试类
包com。举例。控制器;导入org。明德罗。JB地穴。bcrypt导入org。spring框架。网络。绑定。注释。获取映射;导入org。spring框架。网络。绑定。注释。休息控制器;@ RestControllerpublic class hello controller { @ get mapping(/test )public String test(){ String password= 123456 ;//加密字符串编码的密码=bcrypt。hashpw(密码,bcrypt。艮盐());系统。出去。println(编码密码);//使用正确密码验证密码是否正确布尔标志=bcrypt。检查pw(密码,编码密码);系统。出去。println(旗帜);//使用错误密码验证密码是否正确flag=BCrypt.checkpw(111222 ,编码密码);系统。出去。println(旗帜);系统。出去。println(-);返回"测试成功";}}
3、测试
访问:http://localhost:8080/test/
多次访问后的后端结果:
2a美元10美元63I66GOCxncIufBHEzcbF .巴鲁45 jcfwatvxz 7 mtz 7 bpdn。sqmsgtrueful-2a $ 10 $ CV7iT/tpz vx23 devmhhlersnippi 2n/s.cl 9 BD 50 v2 lfd f1 woatruefalse-$ 2a $ 10 $ wntnhuedc x 0 inkaflqwm 0 o 9m 163 WRR/rcgldbsfhrgzjqubzoeeegtrueful-
密文含义
示例密文:
$ 2a $ 10 $ CV7iT/tpz vx23 devmhhlersnippi 2n/s.cl 9 BD 50 v2 lfd f1 WOA
$:分割符,无意义;
2a:bcrypt加密版本号;
10:成本的值(默认值);
接下来的22位:盐值;
之后:密码的密文
关于Java使用bcrypt解释密码加密效果的这篇文章到此为止。有关Java bcrypt密码加密的更多信息,请搜索以前关于流行IT的文章或继续浏览下面的相关文章。我希望你以后能更多地支持流行音乐!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。