Scrapy学习笔记-scrapy的__main__.py和__init__.py(python中的scrapy)
928
2022-08-20
Java使用bcrypt实现对密码加密效果详解
目录简介bcrypt加密原理加密过程校验过程bcrypt与md5的区别示例1、引入依赖2、写测试类3、测试密文含义
简介
本文用示例介绍使用对密码进行加密的算法:bcrypt。
bcrypt是一种自带盐值(自动加盐)的加密方案。
bcrypt加密原理
加密过程
先随机生成saltsalt跟password进行hash
注意
对于同一个密码,每次生成的hash是不同的hash中包含了salt
校验过程
从hash中取出saltsalt跟password进行hash计算将得到的hash跟数据库中提取的的hash进行比对返回Boolean类型:true/false
bcrypt与md5的区别
项md5bcrypt密文长度32位60位安全性安全性差。密码相同时,加密后密文一样。提升安全性的方案:加密前生成随机的盐值(字符串),将它与密码拼接,然后再使用md5加密。安全性好。密码相同时,生成的密文是不一样的。(因为它自动生成随机盐值)加密耗时短略长
示例
1、引入依赖
pom.xml加入如下依赖:
总的pom.xml:
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
2、写测试类
package com.example.controller;
import org.mindrot.jbcrypt.BCrypt;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HelloController {
@GetMapping("/test")
public String test() {
String password = "123456";
// 加密
String encodedPassword = BCrypt.hashpw(password, BCrypt.gensalt());
System.out.println(encodedPassword);
// 使用正确密码验证密码是否正确
boolean flag = BCrypt.checkpw(password, encodedPassword);
System.out.println(flag);
// 使用错误密码验证密码是否正确
flag = BCrypt.checkpw("111222", encodedPassword);
System.out.println(flag);
System.out.println("-------------------------------------------");
return "test success";
}
}
3、测试
访问:http://localhost:8080/test/
多次访问后的后端结果:
$2a$10$63I66GOCxncIufBHEzcbF.LUBA45jCFwATVXz7MTzp7bpDn.SQMSGtruefalse-------------------------------------------$2a$10$CV7iT/TpZVx23IdEvMHhleRSnIPPI2N/s..Cl9Bd50V2LFdff1woatruefalse-------------------------------------------$2a$10$wNTnhUedcx0InkAflqWm0O9M163WRR/RCGLdBSfhrgzJQuBZoEeEGtruefalse-------------------------------------------
密文含义
示例密文:
$2a$10$CV7iT/TpZVx23IdEvMHhleRSnIPPI2N/s..Cl9Bd50V2LFdff1woa
$:分割符,无意义;
2a:bcrypt加密版本号;
10:cost的值(默认值);
之后的22位:salt值;
之后:密码的密文
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~