Springboot和jasypt
使用jasypt加密yaml文件中的敏感信息
1、所需依赖
<dependency>
<groupId>com.github.ulisesbocchio</groupId>
<artifactId>jasypt-spring-boot-starter</artifactId>
<version>2.1.2</version>
</dependency>
2、使用在yaml文件中加入所需密钥
jasypt:
encryptor:
password: qwerty #密钥(自定义)
algorithm: PBEWithMD5AndDES #加密方式
3、密钥生成
java -cp jasypt-1.9.3.jar org.jasypt.intf.cli.JasyptPBEStringEncryptionCLI input="123456" password="qwerty" algorithm=PBEWithMD5AndDES
input:密码(自定义)
password:自定义的密钥
algorithm:加密方式
4、把步骤3的命令在jasypt依赖下执行(cmd)
5、加密方法(以连接数据库的账号密码为例)
@Autowired
private StringEncryptor stringEncryptor;
@Test
public void encryptPwd(){
//加密
String username = stringEncryptor.encrypt("root");
System.out.println("加密username:"+username);
String decryptUserName = stringEncryptor.decrypt(username);
System.out.println("解密username"+decryptUserName);
String pwd = stringEncryptor.encrypt("123456");
System.out.println("加密密码:"+pwd);
String decryptPwd = stringEncryptor.decrypt(pwd);
System.out.println("解密密码"+decryptPwd);
}
6、再根据加密出来的账号密码替换掉yaml文件里的账号密码即可
username: ENC(+9yooqRfPCwdB2a+qMKZUA==)
password: ENC(vBoYnMFjRK8JUWTJo2XQJA==)
一定要加ENC()不然识别不了
也可以在springboot的启动类里加密钥(在启动类里加就不需要在配置文件中写了,只需要指定加密方式即可)
public class DemoApplication {
public static void main(String[] args) {
System.setProperty("jasypt.encryptor.password", "qwerty");
SpringApplication.run(DemoApplication.class, args);
}
}