关于Jasypt
Jasypt是一个Java库,允许开发人员以很简单的方式添加基本加密功能,而无需深入研究加密原理。利用它可以实现高安全性的,基于标准的加密技术,无论是单向和双向加密。加密密码,文本,数字,二进制文件。
一般可以将项目配置中敏感信息(如数据库密码,管理者密码,第三方账号密码等)使用Jasypt加密配置。
官网:http://www.jasypt.org/
SpringBoot - 集成Jasypt
1. 引入pom依赖:
<!-- jasypt加密 -->
<dependency>
<groupId>com.github.ulisesbocchio</groupId>
<artifactId>jasypt-spring-boot-starter</artifactId>
<version>2.1.0</version>
</dependency>
2. 设置盐值,生产环境中,切记不要直接进行设置,可通过环境变量、命令行等形式进行设置。
jasypt.encryptor.password=SaltDemo
命令行示例:
java -jar xxx.jar --jasypt.encryptor.password=xxxx
环境变量示例
设置环境变量:
# 打开/etc/profile文件
vim /etc/profile
# 文件末尾插入
export JASYPT_PASSWORD = xxxx
启动命令:
java -jar xxx.jar --jasypt.encryptor.password=${JASYPT_PASSWORD}
3. 在application.properties文件中增加配置项,需要jasypt来解密的密文需要用“ENC(......)”
括起来。
spring:
datasource:
driverClassName: com.microsoft.sqlserver.jdbc.SQLServerDriver
type: com.alibaba.druid.pool.DruidDataSource
url: jdbc:sqlserver://ip:1433;DatabaseName=DBNAME
username: dbuser
password: ENC(cJkRcdRnpwyXrgbYg+pc1A==)
# 用友(快递查询)配置参数
yonyou.apicode=ENC(ljmI7p6GFfQEctm7heVX7fcrmzT/YT67XddJDsEbYV8/wOuZRglvz79jekSrv+Z/)
yonyou.url=ENC(wjlJlV2cejA8oZQJCHFajfJg9pTAH+WE89rwXl6lM3FrU5E1u4CnC/HPcVXLYo3lit2QNn4EGWe6I6wlO8D1nl3mGwelKj8k)
简单来说,就是在需要加密的值使用ENC(和)进行包裹,即:ENC(密文)。若想避免参数冲突,可修改前缀和后缀,可以直接使用jasypt.encryptor.property.prefix和jasypt.encryptor.property.suffix进行修改即可。
之后想往常一样使用@Value(${})即可。