- 配置文件中往往含有比较敏感的信息,例如,数据库密码,这些数据一旦泄露有可能造成严重的后果
- Jasypt(Java Simplified
Encryption),一个用于加密的Java类库,目的就是让开发者很简便的将加密功能引入自己的项目中来,而不需要去明白具体的加密知识,其有如下特点:
- 基于标准的加密算法,支持单向加密与反向加解密
- 与Hibernate可以无缝集成
- 适用于使用Spring应用的基础,与SpringSecurity可以实现无缝集成
- 提供加密应用的配置文件的集成
- 提供多处理器/多核系统中高性能加密的特定功能
- 开放与任何JCE(Java Cryptography Extension)实现相同的API
- 引入相关依赖
<dependency> <groupId>com.github.ulisesbocchio</groupId> <artifactId>jasypt-spring-boot-starter</artifactId> <version>2.1.0</version> </dependency> |
- 在application.properties配置中输入加密密文
application.author=ENC(9afnWGGYyzZN38vYYfYx1ZM9ql//Vp+8)
- 启动应用时,配置系统属性解密密钥
java -jar foo.jar -Djasypt.encryptor.password=HelloWorld
注
- 使用时将密钥与密文分开配置
密钥配置
- 系统属性:java -jar foo.jar -Djasypt.encryptor.password=HelloWorld
- 运行参数:java -jar foo.jar --jasypt.encryptor.password=HelloWorld
- 环境变量
# Linux vim /etc/profile
export jasypt.encryptor.password=HelloWorld
# Windows
系统->更改设置->高级->环境变量->新增:jasypt.encryptor.password=HelloWorld
生成加密密文
使用工具生成
Jasypt官方提供了CLI工具,通过脚本可以生成对应的密文
从Github下载Jasypt:https://github.com/jasypt/jasypt
解压进入/bin目录,根据需要执行对应脚本,默认使用PBEWithMD5AndDES算法
示例
$ sh encrypt.sh input=sevenlin password=HelloWorld
----ENVIRONMENT-----------------
Runtime: Oracle Corporation Java HotSpot(TM) 64-Bit Server VM 25.73-b02
----ARGUMENTS-------------------
input: sevenlin
password: HelloWorld
----OUTPUT----------------------
lUmhU/2EgreTZVdtWFCnqE86tXuo6OMp
使用代码生成
public class EncryptDemo { public static void main(String[] args) { StandardPBEStringEncryptor encryptor = new StandardPBEStringEncryptor(); encryptor.setPassword("HelloWorld"); String enc = encryptor.encrypt("sevenlin"); System.out.println(enc); } } |