jasypt对配置文件的数据加密与解密方式

 更新时间:2024年01月12日 10:02:34   作者:龙域、白泽  
这篇文章主要介绍了jasypt对配置文件的数据加密与解密方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

介绍

  • Jasypt是一个Java库,可以使开发者不需太多操作来给Java项目添加基本加密功能,而且不需要知道加密原理。
  • Jasypt能够以很简单的方式为Java项目提供加密功能。
  • Jasypt还符合RSA标准的基于密码的加密,并提供了无配置加密工具以及新的、高可配置标准的加密工具。

作用

在配置文件中写密文,程序启动后自动解密,再使用这个解密后的信息对MySQL或Redis等进行连接,可以隐藏一些配置文件中的敏感信息,如MySQL用户名密码、Redis密码等。

快速开始

导入依赖

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

加密数据

写一个main方法,加密数据库的用户名和密码,得到加密后的用户名和密码。

public static void main(String[] args) {
    StandardPBEStringEncryptor standardPBEStringEncryptor = new StandardPBEStringEncryptor();
    /*配置文件中配置如下的算法*/
    standardPBEStringEncryptor.setAlgorithm("PBEWithMD5AndDES");
    /*配置文件中配置的password*/
    standardPBEStringEncryptor.setPassword("EWRREWRERWECCCXC");
    /*要加密的文本*/
    String username = standardPBEStringEncryptor.encrypt("root");
    String password = standardPBEStringEncryptor.encrypt("password");
    /*将加密的文本写到配置文件中*/
    System.out.println("username = " + username);
    System.out.println("password = " + password);
}

得到加密后的用户名和密码。

username = aL72g6IaZDwxZE63fhujOA==
password = V+sgI2xsjCIh2gHs15jN8CyAwGzpwr6k

配置文件

password是必须自己定义的,其他都可以不配置,有默认的配置。

在敏感信息处使用对应的ENC(密文)代替

# jasypt 配置加密
jasypt:
  encryptor:
    # 密码盐值(自定义)
    password: jasypt
    # 加密算法设置
    algorithm: PBEWithMD5AndDES
 
spring:
  datasource:
    url: jdbc:mysql://localhost:3306/hm_project_v4?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
    type: com.alibaba.druid.pool.DruidDataSource
    driver-class-name: com.mysql.cj.jdbc.Driver
    username: ENC(aL72g6IaZDwxZE63fhujOA==)
    password: ENC(V+sgI2xsjCIh2gHs15jN8CyAwGzpwr6k)

这样就实现了对配置文件的数据进行加密或者解密了。

注意:

main方法的algorithm和password 要与 配置文件的相同【重要】

获取配置文件中的数据

在配置文件中写密文,程序启动后自动解密,我们使用正常的@Value方式获取的数据即为解密后的数据。

@RestController
public class MUserController {
 
    @Value("${spring.datasource.password}")
    private String password;
 
    @GetMapping("/properties")
    public String getProperties() {
        return password;
    }
}

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Spring将MultipartFile转存到本地磁盘的三种方式

    Spring将MultipartFile转存到本地磁盘的三种方式

    在Java中处理文件向来是一种不是很方便的操作,然后随着Spring框架的崛起,使用Spring框架中的MultipartFile来处理文件也是件很方便的事了,今天就给大家介绍Spring将MultipartFile转存到本地磁盘的方式,需要的朋友可以参考下
    2024-10-10
  • Maven 错误找不到符号的解决方法

    Maven 错误找不到符号的解决方法

    这篇文章主要介绍了Maven 错误找不到符号的解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-08-08
  • 基于NIO的Netty网络框架(详解)

    基于NIO的Netty网络框架(详解)

    下面小编就为大家带来一篇基于NIO的Netty网络框架(详解)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-06-06
  • Java 实现微信和支付宝支付功能

    Java 实现微信和支付宝支付功能

    这篇文章主要介绍了Java 实现微信和支付宝支付功能,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-02-02
  • SpringBoot实现接口版本控制的示例代码

    SpringBoot实现接口版本控制的示例代码

    这篇文章主要介绍了springboot如何实现接口版本控制,接口版本控制,比如微服务请求中某个接口需要升级,正常做法是升级我们的版本,文中有详细的代码示例供大家参考,具有一定的参考价值,需要的朋友可以参考下
    2024-03-03
  • springboot Actuator的指标监控可视化功能详解

    springboot Actuator的指标监控可视化功能详解

    SpringBoot Actuator是springboot为简化我们对微服务项目的监控功能抽取出来的模块,使得我们每个微服务快速引用即可获得生产界别的应用监控、审计等功能。这篇文章主要介绍了springboot Actuator的指标监控可视化,需要的朋友可以参考下
    2021-08-08
  • 使用Java实现二维码生成与扫码验证功能

    使用Java实现二维码生成与扫码验证功能

    在现代软件开发中,二维码被广泛应用于各种场景,例如支付、预约、身份验证等,本篇文章将以 Java 为例,介绍如何实现二维码的生成以及扫码验证的功能,需要的朋友可以参考下
    2025-08-08
  • java使用FFmpeg提取音频的实现示例

    java使用FFmpeg提取音频的实现示例

    在Java开发中,我们经常会遇到需要使用FFmpeg来处理音视频文件的情况,本文主要介绍了java使用FFmpeg提取音频的实现示例,具有一定的参考价值,感兴趣的可以了解一下
    2024-01-01
  • Spring-Boot 访问外部接口的方案总结

    Spring-Boot 访问外部接口的方案总结

    在Spring-Boot项目开发中,存在着本模块的代码需要访问外面模块接口,或外部url链接的需求,针对这一需求目前存在着三种解决方案,下面将对这三种方案进行整理和说明,对Spring-Boot 访问外部接口方案感兴趣的朋友跟随小编一起看看吧
    2022-12-12
  • Spring Boot容器加载时执行特定操作(推荐)

    Spring Boot容器加载时执行特定操作(推荐)

    这篇文章主要介绍了Spring Boot容器加载时执行特定操作及spring内置的事件,需要的朋友可以参考下
    2018-01-01

最新评论