springboot使用jasypt对配置文件加密加密数据库连接的操作代码

 更新时间:2024年01月25日 16:01:53   作者:一名技术极客  
这篇文章主要介绍了springboot使用jasypt对配置文件加密加密数据库连接的操作代码,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧

springboot使用jasypt对配置文件加密 

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

springboot配置

jasypt:
  encryptor:
    password: saltValue    #salt值,密文加盐
spring:
  datasource: # 数据库链接
    db1:
      jdbc-url: jdbc:mysql://x.x.x.x:3306/db_test?useUnicode=true&characterEncoding=utf8&useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=GMT%2B8
      username: root      #也可以加密用户名,依然是ENC()格式,这里没有进行加密
      password: ENC(OVL1V3KDtTa8w9IIOVuSdeyCOsZXAN0+)  #加密了密码,ENC()括号内为密文
      driver-class-name: com.mysql.cj.jdbc.Driver
      mapper-locations: classpath*:mapper/otcmapper/*.xml

启动类添加注解:@EnableEncryptableProperties

@SpringBootApplication(exclude = DataSourceAutoConfiguration.class)
@EnableEncryptableProperties
@EnableScheduling
//@EnableAsync
public class SpBatchApplication {
    public static void main(String[] args) {
        SpringApplication.run(SpBatchApplication.class, args);
    }
}

通过明文获取加密的值 cmd在自己的maven仓库目录下执行命令,(要保证依赖下载下来了)
解释:
input:文字的明文
password:加密的盐值(可随意,必须=jasypt:encryptor:password: saltValue)
algorithm:PBEWithMD5AndDES(默认算法)

java -cp org/jasypt/jasypt/1.9.2/jasypt-1.9.2.jar org.jasypt.intf.cli.JasyptPBEStringEncryptionCLI input="密码明文" password=saltValue algorithm=PBEWithMD5AndDES

执行后输出结果:OUTPUT就是密文了,把密文替换yml的属性值就行
ENC(OVL1V3KDtTa8w9IIOVuSdeyCOsZXAN0+)

----ARGUMENTS-------------------
algorithm: PBEWithMD5AndDES
input: 密码明文
password: saltValue
----OUTPUT----------------------
OVL1V3KDtTa8w9IIOVuSdeyCOsZXAN0+

启动springboot就会自动解密了

通过密文和盐值解密得到明文

java -cp jasypt-1.9.2.jar org.jasypt.intf.cli.JasyptPBEStringDecryptionCLI input="加密后的密文" password=saltValue algorithm=PBEWithMD5AndDES

代码封装工具类

public class JasyptUtil {
	private static final String PBEWITHMD5ANDDES = "PBEWithMD5AndDES";
	private static final String PBEWITHHMACSHA512ANDAES_256 = "PBEWITHHMACSHA512ANDAES_256";
	/**
	 * 
	 * @param text  待加密原文
	 * @param crack 盐值(密钥)
	 * @return 加密后的字符串
	 * @Description: Jasypt加密(PBEWithMD5AndDES)
	 */
	public static String encryptWithMD5(String text, String crack) {
//1.创建加解密工具实例
		StandardPBEStringEncryptor encryptor = new StandardPBEStringEncryptor();
//2.加解密配置
		EnvironmentStringPBEConfig config = new EnvironmentStringPBEConfig();
		config.setAlgorithm(PBEWITHMD5ANDDES);
		config.setPassword(crack);
		encryptor.setConfig(config);
//3.加密
		return encryptor.encrypt(text);
	}
	/**
	 * 
	 * @param text  待解密原文
	 * @param crack 盐值(密钥)
	 * @return 解密后的字符串
	 * @Description: Jasypt解密(PBEWithMD5AndDES)
	 */
	public static String decryptWithMD5(String text, String crack) {
//1.创建加解密工具实例
		StandardPBEStringEncryptor encryptor = new StandardPBEStringEncryptor();
//2.加解密配置
		EnvironmentStringPBEConfig config = new EnvironmentStringPBEConfig();
		config.setAlgorithm(PBEWITHMD5ANDDES);
		config.setPassword(crack);
		encryptor.setConfig(config);
//解密
		return encryptor.decrypt(text);
	}
	/**
	 * 
	 * @param text  待加密的原文
	 * @param crack 盐值(密钥)
	 * @return 加密后的字符串
	 * @Description: jasypt 加密(PBEWITHHMACSHA512ANDAES_256)
	 */
	public static String encryptWithSHA512(String text, String crack) {
//1.创建加解密工具实例
		PooledPBEStringEncryptor encryptor = new PooledPBEStringEncryptor();
//2.加解密配置
		SimpleStringPBEConfig config = new SimpleStringPBEConfig();
		config.setPassword(crack);
		config.setAlgorithm(PBEWITHHMACSHA512ANDAES_256);
// 为减少配置文件的书写,以下都是 Jasypt 3.x 版本,配置文件默认配置
		config.setKeyObtentionIterations("1000");
		config.setPoolSize("1");
		config.setProviderName("SunJCE");
		config.setSaltGeneratorClassName("org.jasypt.salt.RandomSaltGenerator");
		config.setIvGeneratorClassName("org.jasypt.iv.RandomIvGenerator");
		config.setStringOutputType("base64");
		encryptor.setConfig(config);
//3.加密
		return encryptor.encrypt(text);
	}
	/**
	 * 
	 * @param text  待解密原文
	 * @param crack 盐值(密钥)
	 * @return 解密后的字符串
	 * @Description: jasypt 解密(PBEWITHHMACSHA512ANDAES_256)
	 */
	public static String decryptWithSHA512(String text, String crack) {
//1.创建加解密工具实例
		PooledPBEStringEncryptor encryptor = new PooledPBEStringEncryptor();
//2.加解密配置
		SimpleStringPBEConfig config = new SimpleStringPBEConfig();
		config.setPassword(crack);
		config.setAlgorithm(PBEWITHHMACSHA512ANDAES_256);
// 为减少配置文件的书写,以下都是 Jasypt 3.x 版本,配置文件默认配置
		config.setKeyObtentionIterations("1000");
		config.setPoolSize("1");
		config.setProviderName("SunJCE");
		config.setSaltGeneratorClassName("org.jasypt.salt.RandomSaltGenerator");
		config.setIvGeneratorClassName("org.jasypt.iv.RandomIvGenerator");
		config.setStringOutputType("base64");
		encryptor.setConfig(config);
//3.解密
		return encryptor.decrypt(text);
	}
}

到此这篇关于springboot使用jasypt对配置文件加密,加密数据库连接的文章就介绍到这了,更多相关springboot使用jasypt内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • springboot中手动提交事务的实现方法

    springboot中手动提交事务的实现方法

    手动提交事务可以提供更灵活的控制,以便在分布式环境中处理事务的提交和回滚,本文就来介绍一下springboot中手动提交事务的实现方法,感兴趣的可以了解一下
    2024-01-01
  • java8中定时任务最佳实现方式(实现原理)

    java8中定时任务最佳实现方式(实现原理)

    这篇文章主要介绍了java8中定时任务最佳实现方式,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2024-12-12
  • springMVC配置环境实现文件上传和下载

    springMVC配置环境实现文件上传和下载

    这篇文章主要为大家详细介绍了springMVC配置环境实现文件上传和下载的相关资料,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-05-05
  • Log4j详细使用教程_动力节点Java学院整理

    Log4j详细使用教程_动力节点Java学院整理

    这篇文章主要为大家详细介绍了Log4j的使用教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-08-08
  • Kafka集群的搭建与批量启停方式

    Kafka集群的搭建与批量启停方式

    Kafka是一个分布式的基于发布/订阅模式的消息队列,适用于大数据实时处理,本文详细介绍了如何在CentOS 7上搭建Kafka集群,包括服务器配置、配置文件修改、服务启动和关闭脚本编写
    2025-11-11
  • Java中的 HTTP 协议原理详解

    Java中的 HTTP 协议原理详解

    这篇文章主要介绍了Java中的 HTTP 协议原理详解,HTTP超文本传输协议,下文简称 HTTP,它的作用是用于实现服务器端和客户端的数据传输的
    2022-07-07
  • 微服务如何通过feign.RequestInterceptor传递参数

    微服务如何通过feign.RequestInterceptor传递参数

    这篇文章主要介绍了微服务如何通过feign.RequestInterceptor传递参数,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-03-03
  • Java实现url加密处理的方法示例

    Java实现url加密处理的方法示例

    这篇文章主要介绍了Java实现url加密处理的方法,涉及java基于base64、编码转换实现加密解密相关操作技巧,需要的朋友可以参考下
    2017-06-06
  • Java入门指南之IDEA高效调试与数组

    Java入门指南之IDEA高效调试与数组

    调试是指在程序运行过程中,通过各种手段观察程序的执行状态、变量值的变化等,以找出程序中存在的错误或异常的过程,这篇文章主要介绍了Java入门指南之IDEA高效调试与数组的相关资料,需要的朋友可以参考下
    2026-05-05
  • Java线程编程中Thread类的基础学习教程

    Java线程编程中Thread类的基础学习教程

    这篇文章主要介绍了Java线程编程中Thread类的基础学习教程,Thread类包含诸多操作线程的方法,非常重要,需要的朋友可以参考下
    2015-12-12

最新评论