【SpringSecurity】BCrypt密码加密和解密 一文学会使用BCry

在线wifi跑包 金刚包跑包 cap跑包 hccapx ewsa在线 就来 握手包跑包

各位好 又见面了 我是曹操 今天给大家带来一篇新的教程

希望各位细心学习 低调用网


<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-security</artifactId>
</dependency>

BCrypt是一种强大的加密工具,可用于方便地对数据进行加密。与其他加密算法不同,BCrypt内部实现了随机加盐处理,使得每次加密的结果都不相同。相比之下,使用MD5加密的结果是固定的32位密文,这使得MD5容易受到大数据破解的攻击。

在Spring Security中,BCryptPasswordEncoder是官方推荐的密码解析器。它是PasswordEncoder接口的具体实现类,使用了BCrypt强散列方法进行加密。默认情况下,加密强度为10。使用BCrypt加密可以确保每次加密的结果都是不同的。

PasswordEncoder接口还提供了其他方法,其中包括upgradeEncoding(String encodedPassword)方法。如果加密后的密码需要重新加密以提高安全性,则该方法返回true;否则返回false。默认情况下,该方法返回false。

如果您需要使用BCryptPasswordEncoder,您可以在项目的Maven依赖中添加相应的依赖项。


<dependency>
    <groupId>org.springframework.security</groupId>
    <artifactId>spring-security-web</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.security</groupId>
    <artifactId>spring-security-config</artifactId>
</dependency>
public class BcryptTest {
    public static void main(String[] args) {
        // 用户密码
        String password = "123123";
        // 创建密码加密的对象
        BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder();
        // 密码加密
        String newPassword = passwordEncoder.encode(password);
        System.out.println("加密后的密码为:" + newPassword);
        // 校验这两个密码是否是同一个密码
        // matches方法第一个参数是原密码,第二个参数是加密后的密码
        boolean matches = passwordEncoder.matches(password, newPassword);
        System.out.println("两个密码一致:" + matches);
    }
}

赞(0)