前言
我们在项目配置文件中常常暴露一些敏感关键信息;例如:数据库的连接URL、用户名、密码、一些中间件的连接信息等。为了安全起见,我们常常需要将这些信息进行加密后进行配置。下面给大家介绍如何使用jasypt来进行关键信息的加解密。
jasypt简单介绍
jasypt 是一个简单易用的加解密Java库;可以快速集成到 我们Spring Boot 项目中,并提供了自动配置,使用非常简单。jasypt 的实现原理是实现了 ApplicationContextInitializer 接口,重写了获取环境变量的方法,在容器初始化时对配置文件中的属性进行判断,若包含前后缀(ENC(…))表示是加密属性值,则进行解密并返回。
如何使用
添加Maven依赖
<dependency>
<groupId>com.github.ulisesbocchio</groupId>
<artifactId>jasypt-spring-boot-starter</artifactId>
<version>2.1.1</version>
</dependency>
配置加密密钥
# 配置数据源加密的密钥
jasypt:
encryptor:
password: root_123
信息加密获取密文
获取密文的方式常常有以下两种:
-
[x] 通过加密命令获取。 -
[x] 通过代码获取。
通过加密命令获取密文
cmd进入本地maven仓库D:softwareapachemavenmyrepositorycommellowarejasypt1.9.4路径下,执行如下命令:
java -cp jasypt-1.9.4.jar org.jasypt.intf.cli.JasyptPBEStringEncryptionCLI input=密码明文 password=密钥 algorithm=PBEWithMD5AndDESsp
-
input:指定原密码。 -
jasypt.encryptor.password:指定秘钥。
执行上述命令后会出现加密后的密码。下面我们分别使用上述命令加密数据库的连接信息,指定密钥:root_123
username: root
password: 123456
加密后的信息如下:
java -cp jasypt-1.9.4.jar org.jasypt.intf.cli.JasyptPBEStringEncryptionCLI input=root password=root_123 algorithm=PBEWithMD5AndDES
通过代码获取密文
public class BasicText {
public static void main(String[] args) {
BasicTextEncryptor textEncryptor = new BasicTextEncryptor();
// 加密所需的salt(盐)
textEncryptor.setPassword("root_123");
// 加密
String username = textEncryptor.encrypt("root");
String password = textEncryptor.encrypt("123456");
//解密
String deUserName = textEncryptor.decrypt("MD78K1z0uxvKNLqRYAgRiw==");
String dePassWord = textEncryptor.decrypt("9sQn4+eCJ0O5cwJ5QXeGJQ==");
System.out.println("username = " + username);
System.out.println("password = " + password);
System.out.println("deUserName = " + deUserName);
System.out.println("dePassWord = " + dePassWord);
}
}
运行上述程序即可获取密文信息。
密文替换
将配置文件中需要加密的数据替换成”ENC(密文)”的格式。
启动项目,项目正常运行
原文始发于微信公众号(SimpleMemory):使用ulisesbocchio对配置文件信息加密
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/137833.html