首页 > 其他分享 >SpringBoot集成Jasypt实现数据加密

SpringBoot集成Jasypt实现数据加密

时间:2023-12-06 20:46:47浏览次数:39  
标签:加密 SpringBoot jasypt System Jasypt println org import

1、环境说明

JDK1.8 + SpringBoot2.7

 

2、添加pom依赖

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

 

3、application.yml 添加jasypt配置

jasypt:
  encryptor:
    algorithm: PBEWithMD5AndDES
    password: abc34sd12DS0od
    property:
      prefix: ENC(
      suffix: )
    iv-generator-classname: org.jasypt.iv.RandomIvGenerator

 

4、编写测试代码进行数据加密

import com.alibaba.fastjson.JSON;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils;
import org.jasypt.encryption.StringEncryptor;
import org.jasypt.util.text.BasicTextEncryptor;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.domain.Range;
import org.springframework.test.context.ActiveProfiles;
import org.springframework.test.context.junit.jupiter.SpringExtension;
import javax.annotation.Resource;
import java.util.*;

@SpringBootTest
@ExtendWith(SpringExtension.class)
@ActiveProfiles("local")
@Slf4j
class ApplicationTests {

    @Autowired
    private StringEncryptor stringEncryptor;

    @Test
    public void testEncryptor(){
        //1、此方式可单独设置密码
        BasicTextEncryptor textEncryptor = new BasicTextEncryptor();
        textEncryptor.setPassword("GF312120O@0df!");

        String oldStr = "{\n" +
                "    \"prod-redis-password\": \"82gR8CV2wX26~vFs233Gr\",\n" +
                "    \"prod-datasource-master-username\": \"user_swy\",\n" +
                "    \"prod-datasource-master-password\": \"dDl_F2125kd23\",\n" +
                "    \"prod-datasource-slave-username\": \"user_senwy\",\n" +
                "    \"prod-datasource-slave-password\": \"dDl_F2125kd23\"\n" +
                "}";

        System.out.println("------采用自定义密码加密------");
        Map<String,String> map = JSON.parseObject(oldStr, LinkedHashMap.class);
        for(String key: map.keySet()){
            System.out.println(key+"加密后信息:ENC("+textEncryptor.encrypt(map.get(key))+")");
        }

        System.out.println("\n");
        System.out.println("------采用配置中的密码加密------");

        //2、使用配置文件中的密码
        String encryptStr = stringEncryptor.encrypt("abc123");
        System.out.println("加密后的信息为"+encryptStr);
        // 下面的方法是解密
        String decrypt = stringEncryptor.decrypt(encryptStr);
        System.out.println("解密后的信息为"+decrypt);
    }
    
}

 

5、执行结果

将加密后的密文替换掉原来的明文信息即可

 

6、增加java应用启动配置

为了数据的更为安全,yml文件中的jasypt密码配置应该置空,在java应用启动的时候设置启动参数如:

nohup java -Xms1024m -Xmx1024m -Dfile.encoding=utf-8 -Djasypt.encryptor.password=cbd12sQe@oO0 -jar /data/myapp.jar >/dev/null 2>&1 &

 

标签:加密,SpringBoot,jasypt,System,Jasypt,println,org,import
From: https://www.cnblogs.com/guliang/p/17880483.html

相关文章

  • @SpringBootTest 和 @RunWith 注解不能识别 单元测试第一步引入maven依赖
    @SpringBootTest和@RunWith注解不能识别单元测试第一步引入maven依赖一、背景    最近在预研 Rocketmq,在写小例子的时候,需要编写测试代码,突然间发现我的 @SpringBootTest 和 @RunWith 这两个注解不能识别,于是展开了我的问题排查过程。问题截图如下:二、问题排......
  • @RunWith注解找不到,怎么办? spring-boot-starter-test 2.5.5 版本只需要在类上加上@Spr
    @RunWith注解找不到,怎么办?spring-boot-starter-test2.5.5版本只需要在类上加上@SpringBootTest即可,不需要再加@RunWith()注解了。1、新版spring-boot-starter-test不再集成junit,而是junit-jupiter在这里,先说明我使用的版本SpringBoot2.5.5spring-boot-starter-test2.5......
  • SpringBoot学习系列-YAML(后缀为.yml)配置文件使用
    学习使用: YAML 是一种可读性高,以数据为中心的数据序列化格式。什么是序列化?序列化指的是将自定义的对象或者其他数据进行持久化,从而方便进行传输和存储。一般情况下,能够序列化的数据一定能够通过反序列化恢复。注:序列化的目的之一是方便持久化数据,定义本身和持久化应该没啥......
  • SpringBoot Seata 死锁问题排查
    现象描述:SpringBoot项目,启动的时候卡住了,一直卡在那里不动,没有报错,也没有日志输出但是,奇怪的是,本地可以正常启动好吧,姑且先不深究为什么本地可以启动而部署到服务器上就无法启动的问题,这个不是重点,重点是怎么让它启动起来。(PS:我猜测可能是环境不同造成的,包括操作系统不同和JD......
  • springbootlearn01 ERROR汇总
    (1)关于IDEA未生成pom.xml文件通过springinitialize要确认[type]选项中为Mavenproject类型,不可选择其他(没有pom.xml)而POM(只会生成pom.xml)(2)关于spring-boot-starter-parent报红的解决方法关于mavenreload后仍无法加载包通过mvn-Uidea:idea命令重新加载maven包,具体操作是......
  • 小白使用springboot项目进行开发系统前期工作
    首先进行项目的创建,springboot项目创建有两种方式。可以使用idea直接创建springboot项目,可以使用阿里云的源,创建会快一点这里可以选择各种的依赖第二种就是直接创建maven项目,直接导入pom坐标类似于这种,点击刷新即可点击查看代码<dependency>......
  • SpringBoot项目中集成自定义公共Maven依赖如何集成与调试
    场景Nexus-在项目中使用Maven私服,Deploy到私服、上传第三方jar包、在项目中使用私服jar包:https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/101391279Maven项目在pom文件中引入lib下的第三方jar包并打包进去:https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/det......
  • Vue 应用程序性能优化:代码压缩、加密和混淆配置详解
    ​简介在Vue应用程序的开发中,代码压缩、加密和混淆是优化应用程序性能和提高安全性的重要步骤。VueCLI是一个功能强大的开发工具,它提供了方便的配置选项来实现这些功能。本文将介绍如何使用VueCLI配置代码压缩、加密和混淆功能,以提高应用程序的性能和安全性。一、配置代......
  • 移动app之base64编码后的AES加密流量
    移动app之base64编码后的AES加密流量别搁那你抄我,我抄你了。咱直接抄海外okay?参考资料:https://www.vaadata.com/blog/insecure-authentication-tokens-leading-to-account-takeover/技术点AES-256-CBC加密base64编码会话管理请求包:GET/loginHTTP/1.1Host:172.23.7......
  • AES 加密
    1.AES程序加密1packagecom.demo.util;23importcom.demo.exception.BusinessException;4importcom.demo.model.enums.ErrorEnum;5importlombok.extern.slf4j.Slf4j;6importorg.apache.commons.lang3.RandomStringUtils;7importorg.apache.comm......