springboot配置文件属性加密
1.非springboot系统属性加密,也就是自己自定义的属性,可以获取到加密属性之后解密,我用MD5加密演示的解密。
//获取 application.properties中自定义的 storePassword属性值可以给他加密 @Value("${storePassword}") private String password; // 表示在创建该bean之时自动执行 @PostConstruct public void init() { // 调用我们自己的解密方法,这里解密自定义的属性 password = MD5Util.MD5((password)); }
2.springboot的系统属性值加密
//给springboot系统属性加密 //如下: spring.datasource.username={decry}cm9vdA== spring.datasource.password={decry}SHdqMjAxOCE= <!--springboot配置系统文件的属性值加密的依赖--> <dependency> <groupId>com.github.ulisesbocchio</groupId> <artifactId>jasypt-spring-boot-starter</artifactId> <version>2.0.0</version> </dependency> /** * 加密属性检测类 */ import com.ulisesbocchio.jasyptspringboot.EncryptablePropertyDetector; public class MyEncryptablePropertyDetector implements EncryptablePropertyDetector { public static final String encodePasswordPrefix = "{decry}"; public MyEncryptablePropertyDetector() { super(); } //如果属性的字符开头为"{decry}",返回true ,表明属性是加密过的 @Override public boolean isEncrypted(String s) { if (s != null) { return s.startsWith(encodePasswordPrefix); } return false; } //该方法告诉工具,如何将自定义前缀去除 @Override public String unwrapEncryptedValue(String s) { return s.substring(encodePasswordPrefix.length()); } } /** * 解密类 */ import com.hwj.pjname.common.DecryptProperties.encrypt.EncryptAndDecryptUtils; import com.ulisesbocchio.jasyptspringboot.EncryptablePropertyResolver; public class MyEncryptablePropertyResolver implements EncryptablePropertyResolver { public MyEncryptablePropertyResolver() { super(); } //自定义解密方法 @Override public String resolvePropertyValue(String s) { if (null != s && s.startsWith(MyEncryptablePropertyDetector.encodePasswordPrefix)) { //return PasswordUtil.decode(s.substring(MyEncryptablePropertyDetector.encodePasswordPrefix.length())); return EncryptAndDecryptUtils.base64Decrypt(s.substring(MyEncryptablePropertyDetector.encodePasswordPrefix.length())); } return s; } } //入口类添加该注解,开启属性自动解密码功能 //参考 https://github.com/ulisesbocchio/jasypt-spring-boot-samples/tree/master/jasypt-spring-boot-demo @EnableEncryptableProperties public class HwjpjApplication extends SpringBootServletInitializer { // 注册这两个bean,加密属性检测类 @Bean(name = "encryptablePropertyDetector") public EncryptablePropertyDetector encryptablePropertyDetector() { return new MyEncryptablePropertyDetector(); } //属性解密类 @Bean(name = "encryptablePropertyResolver") public EncryptablePropertyResolver encryptablePropertyResolver() { return new MyEncryptablePropertyResolver(); } public static void main(String[] args) { SpringApplication.run(HwjpjApplication.class, args); } @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder builder){ return builder.sources(HwjpjApplication.class); } }

浙公网安备 33010602011771号