第一步引入依赖

      <dependency>
        <groupId>com.github.ulisesbocchio</groupId>
        <artifactId>jasypt-spring-boot-starter</artifactId>
        <version>3.0.5</version>
      </dependency>

第二步application.yml中增加jasypt配置

# 如果密文加盐,需要配置盐值
jasypt:
  encryptor:
    password:  # 密钥(该值不应该写在配置文件中,使用时建议通过【-Djasypt.encryptor.password=盐值】在启动命令传入)
    algorithm: PBEWITHHMACSHA512ANDAES_256 # 算法
    iv-generator-classname: org.jasypt.iv.RandomIvGenerator # 盐生成器

第三步加密数据

通过Jasypt Jar包加密数据

获取Jar包:首先需要拥有 jasypt-x.x.x.jar 文件。如果你使用Maven,可以在本地仓库(通常是 ~/.m2/repository/org/jasypt/jasypt/)找到;也可以在Maven中央仓库下载。

执行加密命令:在命令行中运行以下命令(参数根据实际情况替换):

java -cp jasypt-1.9.3.jar org.jasypt.intf.cli.JasyptPBEStringEncryptionCLI input="明文" password="密钥" algorithm="算法"

java -cp jasypt-1.9.3.jar org.jasypt.intf.cli.JasyptPBEStringEncryptionCLI input="yourpassword" password="yourMasterKey" algorithm=PBEWITHHMACSHA512ANDAES_256 ivGeneratorClassName=org.jasypt.iv.RandomIvGenerator

解密:java -cp jasypt-1.9.3.jar org.jasypt.intf.cli.JasyptPBEStringDecryptionCLI input="密文" password="密钥" algorithm="算法"

PBEWITHHMACSHA512ANDAES_256算法加密时需要指定盐生成器否则会报错,如:ivGeneratorClassName=org.jasypt.iv.RandomIvGenerator

获取结果:命令执行后,在 OUTPUT 部分输出的字符串即为加密后的密文

通过Spring Boot 编程方式加密数据

@Autowired
private StringEncryptor encryptor;

public void testEncrypt() {
    String plainText = "yourpassword";
    String encryptedText = encryptor.encrypt(plainText);
    System.out.println("加密后的密文: " + encryptedText); // 例如输出:qzVuB4VpQYoW0CkIUPNV1A==
}

第四步在配置文件中使用加密值

格式:将密文用 ENC() 包裹起来

# application.properties 示例
my.secret.property=ENC(qzVuB4VpQYoW0CkIUPNV1A==)
# application.yml 示例
spring:
  datasource:
    password: ENC(qzVuB4VpQYoW0CkIUPNV1A==)

关键配置:为了让Jasypt在应用启动时能自动解密,必须为其提供用于解密的主密码(Master Password)。出于安全考虑,主密码不应直接写在配置文件中。推荐的做法是通过系统属性、环境变量或启动命令传入

java -jar your-application.jar -Djasypt.encryptor.password=yourMasterKey
最后修改:2025 年 12 月 05 日
如果觉得我的文章对你有用,请随意赞赏