java项目引入jasypt后读取不到配置文件,jar包config同级的配置文件读取不到
背景
项目上要求配置文件加密,因此使用jasypt进行处理。
依赖:
<dependency>
<groupId>com.github.ulisesbocchio</groupId>
<artifactId>jasypt-spring-boot-starter</artifactId>
<version>3.0.4</version>
</dependency>
配置文件
jasypt:
encryptor:
# 上线后需要设置为对应的加密key,
password: xx
#涉及到用户名密码
username: admin
password: ENC(xx)
密钥生成:
package com.message.demo.enc;
import org.jasypt.encryption.StringEncryptor;
import org.jasypt.encryption.pbe.PooledPBEStringEncryptor;
import org.jasypt.encryption.pbe.config.SimpleStringPBEConfig;
import org.jasypt.iv.RandomIvGenerator;
import org.jasypt.salt.RandomSaltGenerator;
/**
* 用于java配置文件enc加密
*/
public class EncEncoder3 {
private static final String ENCRYPTION_PASSWORD = "w8Jq52gQzCJmUCQY"; // 替换为你的加密密钥
public static void main(String[] args) {
String target = "123456";
StringEncryptor encryptor = jasyptStringEncryptor();
System.out.println(encryptor.encrypt(target));
System.out.println(encryptor.decrypt("bmiIXVeUFmARgh5AVuXpyRsuMplvE89XvPREM+aurGSrGLB5XUmHdWqGV674+rcf"));
}
public static StringEncryptor jasyptStringEncryptor() {
SimpleStringPBEConfig config = new SimpleStringPBEConfig();
config.setPassword(ENCRYPTION_PASSWORD);
config.setAlgorithm("PBEWITHHMACSHA512ANDAES_256");
config.setPoolSize(1);
config.setKeyObtentionIterations("1000");
config.setProviderName("SunJCE");
config.setSaltGenerator(new RandomSaltGenerator());
config.setIvGenerator(new RandomIvGenerator());
config.setStringOutputType("base64");
PooledPBEStringEncryptor encryptor = new PooledPBEStringEncryptor();
encryptor.setConfig(config);
return encryptor;
}
}
注意:
1.9.3版本,如果使用官方jar包的方式生成密文,指定算法和不指定算法生成的密文,java项目解析不了,所以要用上面的工具类生成。java项目中默认用的就是代码上的类进行解密
方法在:com.ulisesbocchio.jasyptspringboot.configuration.StringEncryptorBuilder#createPBEDefault
遇到的问题:
本地启动正常,发布到测试环境,提示cant resolve placeholder xx
读不到配置文件,配置文件存放目录:
项目.jar,config,logs.
cd config
application-test.yml。
解决方法:
# spring cloud 项目引入jasypt-spring-boot-starter后application-{profile}的配置不生效,处理方式
jasypt:
encryptor:
bootstrap: false
解决链接:
https://huaweicloud.youkuaiyun.com/64eea832c70554103b8eb353.html
ps:吐槽一下,网上搜到的大部分文章都是标准的接入流程,难道都没有遇到问题吗?