一、密文生成
找到 jasypt ,可以下载 jasypt 提供的命令行工具。
解压进入bin目录中,可以执行对应的脚本对需要加密的数据进行加密。
.\bin\encrypt.bat algorithm=PBEWITHHMACSHA512ANDAES_256 ivGeneratorClassName=org.jasypt.iv.RandomIvGenerator password=thisisapwd input=123456
命令运行结束后,OUTPUT下方即为加密后的数据。
- algorithm:加密算法,jasypt-spring-boot-starter默认加密方式为PBEWITHHMACSHA512ANDAES_256
- ivGeneratorClassName:初试化向量实现类名,jasypt-spring-boot-starter默认配置为org.jasypt.iv.RandomIvGenerator
- password:加密密钥,该密钥值后续需要以系统变量或环境变量方式进行配置使用
- input:需要加密的数据,如数据库密码等
注意:在1.9.3版本环境下,ivGeneratorClassName 必须指定,否则会出现 Operation not possible (Bad input or parameters) 异常。
二、环境配置
在项目中添加如下依赖:
<!-- 密码加密 -->
<dependency>
<groupId>com.github.ulisesbocchio</groupId>
<artifactId>jasypt-spring-boot-starter</artifactId>
<version>3.0.3</version>
</dependency>
然后在项目配置文件 application.yml
中添加如下密钥配置:
# 敏感数据加密
jasypt:
encryptor:
password: ${ZRAR_PWD}
其中加密密钥没有直接配置在配置文件中,采用了读取系统变量或环境变量的方式,避免密码被泄露,提高安全性。
通过加密方式获得的密文需要根据一定的格式配置到对应参数中,配置参考:
spring:
datasource:
type: com.alibaba.druid.pool.DruidDataSource
druid:
initial-size: 1
max-active: 20
url: jdbc:oracle:thin:@192.168.9.135:1521:orcl
username: abc
password: ENC(HhOncSuEEogoHDuSOaMHLUK4QBNL4FtfJRQ6maVUy/7zzQuA5DCEp/0PEnYxvc7s)
其中 password 参数配置了加密后的密文,需要注意的地方是密文必须使用 ENC前缀加括号包裹,即 ENC(密文)
三、密钥配置
在开发环境中,IDEA中在启动配置中,可以直接配置环境变量。如果想通过系统变量的方式进行配置也是可以的。
在Linux环境中,可以在 /etc/profile 文件中通过export命令,定义对应的参数即可。
# 数据加密密钥
export ZRAR_PWD=thisispwd
注意:配置完成后,注意运行 source /etc/profile
命令让配置生效。