JCE加密 Java Cryptography Extension,要改jre,先用jasypt吧。
1、在git上创建一个工程 https://gitee.com/frankawp/vishnu-config专门放配置文件的
2、加一个文件application-dev.yml 内容如下,给整个项目共享(不知道为什么这个里面没有插入代码的功能,复制后格式都乱了)
#加密配置
jasypt:
encryptor:
password:${JASYPT_ENCRYPTOR_PASSWORD:}
3、然后建一个vishnu-userinfo-dev.yml文件,给vishnu-userinfo工程的开发环境用,内容如下
spring:
datasource:
driver-class-name:com.mysql.cj.jdbc.Driver
username:root
password:ENC(a6j3IUmeDTa8D/bkfDfM/t/y+FAjJ9kz)
url:jdbc:mysql://123.207.56.146:8082/vishnu_userinfo?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false
4、看看实际用的,把spring config工程启动起来,访问http://localhost:1027/vishnu-userinfo/dev/master 可以看到一串json,里面有application-dev.yml 也有 vishnu-userinfo-dev.yml
5、加密
在vishnu-userinfo项目pom.xml中加入
<!--配置属性加密工具 -->
<dependency>
<groupId>com.github.ulisesbocchio</groupId>
<artifactId>jasypt-spring-boot-starter</artifactId>
<version>${jasypt.version}</version>
</dependency>
则数据库密码 password:ENC(a6j3IUmeDTa8D/bkfDfM/t/y+FAjJ9kz) 在使用的时候会被自动解密
a6j3IUmeDTa8D/bkfDfM/t/y+FAjJ9kz 密文是通过jasypt那个jar包在控制台算出来的。
6、秘钥 ${JASYPT_ENCRYPTOR_PASSWORD:} ,表示JASYPT_ENCRYPTOR_PASSWORD是秘钥,这个可以放在启动参数,也可以放在环境变量,放在环境变量比较简单。
TODO: JCE的非对称加密好像会更安全一点,之后再研究