You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Spring Boot中{cipher}格式密码加密的相关问题咨询

Spring Boot中{cipher}格式密码加密的相关问题咨询

嗨,我来帮你梳理清楚Spring Boot里使用{cipher}格式加密密码的这些疑问:

1. 如何加密密码"superSecretPassword"?

你不用依赖在线工具,直接用Spring Security自带的加密工具类就能生成{cipher}格式的加密密码。这里给你一个简单的示例代码:

import org.springframework.security.crypto.encrypt.Encryptors;
import org.springframework.security.crypto.encrypt.TextEncryptor;

public class LocalPasswordEncryptor {
    public static void main(String[] args) {
        // 要加密的原始密码
        String rawPassword = "superSecretPassword";
        // 自定义的密钥(务必保密,别硬编码到配置里,建议用环境变量注入)
        String secretKey = "yourOwnSecureKey";
        // 自定义盐值(同样要保密)
        String salt = "yourUniqueSalt";

        // 创建文本加密器
        TextEncryptor encryptor = Encryptors.text(secretKey, salt);
        // 执行加密
        String encrypted = encryptor.encrypt(rawPassword);
        // 拼接成{cipher}格式的字符串
        System.out.println("{cipher}" + encrypted);
    }
}

运行这段代码就能得到你需要的加密字符串,之后把它配置到security.user.password里就行。记得要把密钥和盐值配置到Spring应用中(比如通过application.propertiesencrypt.keyencrypt.salt属性,或者用环境变量),这样Spring才能解密这个密码。

2. 底层使用的算法是什么?可以修改吗?

默认情况下,Encryptors.text()使用的是AES-256-CBC加密算法,搭配PKCS#5填充方式,密钥是通过PBKDF2算法从你提供的密钥和盐值派生而来的,安全性很不错。

如果你想更换算法,完全可以自定义加密器:

  • 可以用Encryptors.delux(),它会使用更严格的加密配置(比如SHA-256哈希和更安全的密钥派生);
  • 也可以自己实现TextEncryptor接口,指定你需要的算法(比如DESede、AES-128等),只要是Java加密体系支持的算法都可以。

3. 需要哪些依赖?

既然你不用Spring Cloud,只需要引入Spring Security的starter依赖就足够了:

  • Maven项目,在pom.xml中添加:
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-security</artifactId>
</dependency>
  • Gradle项目,在build.gradle中添加:
implementation 'org.springframework.boot:spring-boot-starter-security'

这个依赖包含了所有加密所需的工具类和核心组件,不需要额外的Spring Cloud相关依赖。

备注:内容来源于stack exchange,提问作者gstackoverflow

火山引擎 最新活动