1. jasypt-spring-boot-starter基础入门
第一次接触jasypt-spring-boot-starter时,我也被它强大的配置加密能力惊艳到了。这个starter能帮我们轻松解决配置文件敏感信息暴露的问题,特别是数据库密码、API密钥这些需要严格保护的数据。
先来看看最基本的用法。在你的Spring Boot项目中引入依赖:
xml复制<dependency>
<groupId>com.github.ulisesbocchio</groupId>
<artifactId>jasypt-spring-boot-starter</artifactId>
<version>3.0.5</version>
</dependency>
这里有个坑我踩过:3.x版本和2.x版本在加密算法上有重大变化。如果你用3.x版本但没指定算法,启动时会报错"failed to bind properties"。解决办法很简单,在application.yml中添加:
yaml复制jasypt:
encryptor:
password: your_secret_key
algorithm: PBEWithMD5AndDES
iv-generator-classname: org.jasypt.iv.NoIvGenerator
加密数据库密码的步骤特别实用。假设你的数据库密码是"123456",先用下面这段代码生成加密字符串:
java复制public static void main(String[] args) {
BasicTextEncryptor textEncryptor = new BasicTextEncryptor();
textEncryptor.setPassword("your_secret_key");
String encrypted = textEncryptor.encrypt("123456");
System.out.println(encrypted); // 输出类似:kud5ZnaMJYve284geT0ITw==
}
然后把加密后的字符串放到配置文件中,用ENC()包裹:
yaml复制spring:
datasource:
password: ENC(kud5ZnaMJYve284geT0ITw==)
最后别忘了在启动类上加@EnableEncryptableProperties注解。这样项目启动时,jasypt会自动解密配置项,你的代码拿到的就是解密后的真实密码了。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 自定义加解密实现
默认的ENC()前缀后缀用久了会觉得不够灵活。有次项目需要对接第三方系统,他们要求用特定的标记格式,这就得自定义加解密逻辑了。
首先我们得了解jasypt的工作机制。
