需求
应用程序的数据库连接字符串中不能出现数据库账户口令明文
方案
使用jasypt进行加密和解密
加密后的密码如:ENC(密文)
解密时只解密形如ENC(密文)的
1、引入依赖
<!-- 加密依赖 -->
<dependency>
<groupId>com.github.ulisesbocchio</groupId>
<artifactId>jasypt-spring-boot-starter</artifactId>
<version>2.1.1</version>
</dependency>
<!-- 生成密文用方式二时需要,方式一不需要 -->
<dependency>
<groupId>org.jasypt</groupId>
<artifactId>jasypt</artifactId>
<version>1.9.3</version>
</dependency>
2、生成密文
方式一:使用程序生成
public static void main(String[] args) {
BasicTextEncryptor textEncryptor = new BasicTextEncryptor();
//加密所需的salt(盐)
textEncryptor.setPassword("xxxxxx");
//要加密的数据(数据库的用户名或密码)
String username = textEncryptor.encrypt("dev");
String password = textEncryptor.encrypt("aaa");
String passwordDecrypt = textEncryptor.decrypt(password);
System.out.println("username: "+username);
System.out.println("password: "+password);
System.out.println("passwordDecrypt "+passwordDecrypt);
}
运行结果
username: /HYRSDGZAkIafUithtb1xQ==
password: 7YmScsn9mkgAZmCFYJH1FQ==
passwordDecrypt: aaa
方式二:使用Maven下载好的jar包加密,找到jasypt-1.9.3.jar的位置 输入命令
java -cp jasypt-1.9.3.jar org.jasypt.intf.cli.JasyptPBEStringEncryptionCLI input="你要加密的密码" password=你的盐 algorithm=PBEWithMD5AndDES
例如
java -cp jasypt-1.9.3.jar org.jasypt.intf.cli.JasyptPBEStringEncryptionCLI input="aaa" password=xxxxxx algorithm=PBEWithMD5AndDES
3、在application.properties文件配置。使用ENC()
同时在启动类配置
//xxxxxx为你的salt值
System.setProperty("jasypt.encryptor.password","xxxxxx");
4、常用的版本