BCryptPasswordEncoder加密及判断密码是否相同

本文解决使用BCryptPasswordEncoder加密导致旧密码验证失败的问题,介绍如何正确使用matches方法进行密码匹配。
部署运行你感兴趣的模型镜像

今天在进行编写修改密码功能时遇到输入的是正确的旧密码但是却一直报密码错误

进行代码分析后发现 我是用的BCryptPasswordEncoder来加密 ,你输入的密码每次加密的结果都是不一样的,所以才报错 以下为我的错误源代码

if(!new BCryptPasswordEncoder().encode(oldPassword).equals(u.getPassword() ){
            System.out.println(new BCryptPasswordEncoder().encode(oldPassword));
            System.out.println(u.getPassword());
            return result.failure(1,"旧密码错误");
        }
//加密后的密码 $2a$10$fUxnKgfYgeW1us44lxgpmeqWEbkSa0FwL.x4djyeDBZ8Wz2x5ZEXO
//$2a$10$y8urpb7V34G68.qDSL3bLOrMPBdiiDumusZNSe.CI9mhCpyrq/f9G

修改办法 通过自带的方法 matches 将未经过加密的密码和已经过加密的密码传进去进行判断,返回布尔值。

		BCryptPasswordEncoder encode=new BCryptPasswordEncoder();
        if(!encode.matches(oldPassword,u.getPassword())){
            System.out.println(new BCryptPasswordEncoder().encode(oldPassword));
            System.out.println(u.getPassword());
            return result.failure(1,"旧密码错误");
        }

您可能感兴趣的与本文相关的镜像

Seed-Coder-8B-Base

Seed-Coder-8B-Base

文本生成
Seed-Coder

Seed-Coder是一个功能强大、透明、参数高效的 8B 级开源代码模型系列,包括基础变体、指导变体和推理变体,由字节团队开源

BcryptPasswordEncoderSpring Security中的一种密码加密和解密工具,它使用了一种名为bcrypt的密码哈希算法。bcrypt是一种非可逆的哈希算法,因此无法直接解密加密后的密码。 在使用BcryptPasswordEncoder加密密码时,会对密码进行多次哈希和加盐的操作,以增加密码的安全性。在验证密码时,会将用户输入的密码与数据库中保存的加密密码进行比较来判断是否匹配。 因此,对于已经使用BcryptPasswordEncoder加密密码能通过解密操作来还原原始密码。相反,密码验证的方法是使用相同加密算法,将用户输入的密码进行加密,再与数据库中保存的加密密码进行比较来进行验证。 BcryptPasswordEncoder的使用非常简单,在Spring Security中可以直接通过创建BcryptPasswordEncoder对象来进行密码加密和验证。例如: ```java String rawPassword = "123456"; BcryptPasswordEncoder passwordEncoder = new BcryptPasswordEncoder(); String encodedPassword = passwordEncoder.encode(rawPassword); System.out.println("加密后的密码:" + encodedPassword); boolean matches = passwordEncoder.matches(rawPassword, encodedPassword); System.out.println("密码匹配结果:" + matches); ``` 这段代码中,首先将原始密码"123456"使用BcryptPasswordEncoder进行加密,然后将加密结果输。接着使用matches方法将用户输入的原始密码加密密码进行比较,输结果为true表示密码匹配成功。 总之,BcryptPasswordEncoder是一种安全且常用的密码加密方式,能够有效地保护用户密码的安全性。它支持直接解密加密密码,而是通过比较加密后的密码来验证原始密码是否正确。
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值