BCrypt

密码加密

MD5:大数据碰撞,不能纯数字,要大小写,要多少位,多次对同一个明文加密,密文是一样的
BCrypt比MD5更安全,因为其内部引入的加盐(29个字母的随机字符串)机制,每次加密结果都不一样
generate 生成(gen)
salt 盐
hash 拼凑
check 核对

BCrypt快速入门
public class TestBcrypt {
    public static void main(String[] args) {
            String gensalt = BCrypt.gensalt();			              -->获取盐
            String saltPassword = BCrypt.hashpw("123456", gensalt);   -->加密
            boolean checkpw = BCrypt.checkpw("123456", saltPassword); -->校验
            System.out.println("密码校验结果:"+checkpw);
    }
}
新增管理员时对密码加密保存

​ 修改changgou_service_system项目的AdminServiceImp

@Override
    public void add(Admin admin){
        String gensalt = BCrypt.gensalt();				              -->获取盐
        String hashpw = BCrypt.hashpw(admin.getPassword(), gensalt);  -->加密
        admin.setPassword(hashpw);									  -->重置密码
        adminMapper.insert(admin);  								  -->添加用户
    }
管理员登录校验密码

​ 1.AdminService 新增方法

 boolean login(Admin admin);

​ 2.AdminServiceImpl 实现此方法

@Override
    public boolean login(Admin admin) {
        Admin admin1 = new Admin();					-->创建对象
        admin1.setLoginName(admin.getLoginName());	-->设置对象的用户名
        admin1.setStatus("1");				        -->设置对象的状态码
        Admin adminResult = adminMapper.selectOne(admin1);	-->精确查找用户
        if (adminResult == null){
            return false;											
        }else{ 
        											-->校验密码				
            return BCrypt.checkpw(admin.getPassword(),adminResult.getPassword());
        }
    }

​ 3.AdminController 新增方法

   @PostMapping("/login")  										-->用户登录必须用post请求
    public Result login(@RequestBody Admin admin){
        boolean result = adminService.login(admin);
        if (result){
            return new Result(true, StatusCode.OK,"登录成功");
        }else{
            return new Result(false, StatusCode.ERROR,"登录失败");
        }
    }
加密算法<拓展了解>
*可逆加密算法:加密后, 密文可以反向解密得到密码原文
	+对称加密:文件加密和解密使用相同的密钥,即加密密钥也可以用作解密密钥
     	--用途: 一般用于保存用户手机号、身份证等敏感但能解密的信息。
     	--常见的对称加密算法有: AES、DES、3DES、Blowfish、IDEA、RC4、RC5、RC6、HS256
	+非对称加密:两个密钥:公开密钥(publickey)和私有密钥,公有密钥加密,私有密钥解密
     	--用途: 一般用于签名和认证。私钥服务器保存, 用来加密, 公钥客户拿着用于对于令牌或者签名的解密或者校验使用. 
     	--常见的非对称加密算法有: RSA、DSA(数字签名用)、ECC(移动设备用)、RS256 (采用 SHA‐256 的 RSA 签名)
*不可逆加密算法:加密后,就不能反向解密得到密码原文, MD5、SHA、HMAC

Base64编码:Base64是网络上最常见的用于传输8Bit字节代码的编码方式之一。Base64编码可用于在 HTTP环境下传递较长的标识信息。采用Base64编码解码具有不可读性,即所编码的数据 不会被人用肉眼所直接看到。注意:Base64只是一种编码方式,不算加密方法。

发布了55 篇原创文章 · 获赞 4 · 访问量 9842

猜你喜欢

转载自blog.csdn.net/weixin_45678915/article/details/104364688