编程知识 cdmana.com

SpringBoot Jasypt加密数据库账号密码信息

一、前言

考虑安全性,项目部署的时候,配置文件中的数据库账户密码不能为明文,所以考虑加密方式

1、Jasypt加密

2、alibaba.druid 加密

这里我用的是jasypt,话不多说,开始配置

二、配置

1、maven引用

Jasypt引用的maven配置: 这里我用的是jasypt1.9.2的版本, 你们可以考虑更高版本配置的

		<dependency>
			<groupId>com.github.ulisesbocchio</groupId>
			<artifactId>jasypt-spring-boot-starter</artifactId>
			<version>2.1.0</version>
		</dependency>
		<dependency>
			<groupId>com.github.ulisesbocchio</groupId>
			<artifactId>jasypt-spring-boot</artifactId>
			<version>2.1.0</version>
		</dependency>
		<dependency>
			<groupId>org.jasypt</groupId>
			<artifactId>jasypt</artifactId>
			<version>1.9.2</version>
		</dependency>

另外jasypt 1.9.2 最好搭配的springboot版本是2.3.3以上

2、加密字符生成

找到maven本地仓库中的jasypt -1.9.2.jar 的目录,并打开cmd环境,执行以下命令:

java -cp jasypt-1.9.2.jar org.jasypt.intf.cli.JasyptPBEStringEncryptionCLI input="123456" password=sb01 algorithm=PBEWithMD5AndDES

命令解析:

  • input的值就是原密码。
  • password的值就是参数jasypt.encryptor.password指定的值,即秘钥。这个随你自己定
  • algorithm 是加密方式,固定值

切记,命令前后不要有空格!,不然会报:java.security.NoSuchAlgorithmException: PBEWithMD5AndDES? SecretKeyFactory not available

正确执行结果如下:

3、使用

  1. 增加配置属性jasypt.encryptor.password = XXX,这是加密的秘钥,这里我定的是sb01;
  2. 所有明文密码替换为ENC(加密字符串),例如ENC(w+OxT6QlB18LAo9pR2t6zA==);

完成如上配置即可!

注意:

1、如果你项目的启动类上没有使用@SpringBootApplication@EnableAutoConfiguration注解,则需要在你的启动类

  • Application.java上增加注解@EnableEncryptableProperties;

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

版权声明
本文为[执笔记忆的空白]所创,转载请带上原文链接,感谢
https://cloud.tencent.com/developer/article/1764731

Scroll to Top