当前位置: 首页 > news >正文

Springboot整合Jasypt实战

Springboot整合Jasypt实战

  • 引入依赖

    <dependency><groupId>com.github.ulisesbocchio</groupId><artifactId>jasypt-spring-boot-starter</artifactId><version>3.0.5</version>
    </dependency>
    
  • 配置jasypt

    # 配置jasypt相关信息
    jasypt:encryptor:# 配置加密算法algorithm: PBEWithMD5AndDES# 加密使用的秘钥(秘钥不建议出现在配置文件中)password: jaspyt_passwordproperty:# 算法识别前缀(当算法发现配置文件中的值以这前缀开始,后缀结尾时,会使用指定算法解密)prefix: ENC(# 算法识别后缀suffix: )
    
  • 使用jasypt生成密文

    @SpringBootTest
    public class JasyptTest {@Autowiredprivate StringEncryptor stringEncryptor;@Testpublic void jasyptTest(){System.out.println("root加密:" + stringEncryptor.encrypt("root"));System.out.println("密码加密:" + stringEncryptor.encrypt("xxx"));}
    }
    

在这里插入图片描述

  • 将数据库连接信息中的明文进行替换

    spring:datasource:#数据库信息username: ENC(7oFPCjLkJLw53LbghzgLXnTb6ASsEYrqDNCNsYe/r/ztvTwFBAQlc+InWS4/rC1S)password: ENC(z5L9s3/deJ/CYu9NWU7vTAEpb3GW9qB3H7T2nAnqDiityOrwEL7nXtT51VX0b0q8)url: jdbc:mysql://127.0.0.1:3306/jasyptTest?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8driver-class-name: com.mysql.cj.jdbc.Driver
    

但是一般不将秘钥写入配置文件,写入配置文件也会产生一些安全问题

加密秘钥存储

方式一:将秘钥作为程序启动的命令行参数
java -jar xxx.jar --jasypt.encryptor.password=秘钥
方式二:将秘钥作为程序启动时的环境变量
java -Djasypt.encryptor.password=秘钥 -jar xxx.jar
方式三:自定义加密解密逻辑
  • 自定义加密解密类

    import org.jasypt.encryption.StringEncryptor;
    import org.jasypt.encryption.pbe.PooledPBEStringEncryptor;
    import org.jasypt.encryption.pbe.config.PBEConfig;
    import org.jasypt.encryption.pbe.config.SimpleStringPBEConfig;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;/*** 自定义加密*/
    @Configuration
    public class EncryptionConfig {@Bean("jasyptStringEncryptor")public StringEncryptor stringEncryptor() {DESEncrypt desEncrypt = new DESEncrypt();return desEncrypt;}public class DESEncrypt implements StringEncryptor {/*** SimpleStringPBEConfig是Jasypt中的一个实现类,用于配置PBE算法的参数。* 它提供了一些方法,可以设置密码、密钥迭代次数、算法、盐和IV生成器等。您可以使用它来配置PBE算法的参数,* 以便与StringEncryptor一起使用。* @return*/private PBEConfig config(){SimpleStringPBEConfig config = new SimpleStringPBEConfig();//设置秘钥config.setPassword("jaspyt_password");//设置加密算法config.setAlgorithm("PBEWITHHMACSHA512ANDAES_256");//这行代码设置了PBE加密算法从密码中推导密钥的迭代次数。config.setKeyObtentionIterations("1000");config.setPoolSize("1");config.setProviderName("SunJCE");config.setSaltGeneratorClassName("org.jasypt.salt.RandomSaltGenerator");config.setIvGeneratorClassName("org.jasypt.iv.RandomIvGenerator");config.setStringOutputType("base64");return config;}/*** 加密* @param s* @return*/@Overridepublic String encrypt(String s) {PooledPBEStringEncryptor encryptor = new PooledPBEStringEncryptor();encryptor.setConfig(config());return encryptor.encrypt(s);}/*** 解密* @param s* @return*/@Overridepublic String decrypt(String s) {PooledPBEStringEncryptor encryptor = new PooledPBEStringEncryptor();encryptor.setConfig(config());return encryptor.decrypt(s);}}
    }
    

相关文章:

Springboot整合Jasypt实战

Springboot整合Jasypt实战 引入依赖 <dependency><groupId>com.github.ulisesbocchio</groupId><artifactId>jasypt-spring-boot-starter</artifactId><version>3.0.5</version> </dependency>配置jasypt # 配置jasypt相关信息…...

计算机网络笔记:DNS域名解析过程

基本概念 DNS是域名系统&#xff08;Domain Name System&#xff09;的缩写&#xff0c;也是TCP/IP网络中的一个协议。在Internet上域名与IP地址之间是一一对应的&#xff0c;域名虽然便于人们记忆&#xff0c;但计算机之间只能互相认识IP地址&#xff0c;域名和IP地址之间的转…...

C语言函数大全-- s 开头的函数(4)

C语言函数大全 本篇介绍C语言函数大全-- s 开头的函数&#xff08;4&#xff09; 1. strdup 1.1 函数说明 函数声明函数功能char * strdup(const char *s);用于将一个以 NULL 结尾的字符串复制到新分配的内存空间中 注意&#xff1a; strdup() 函数返回指向新分配的内存空间…...

Linux常见指令 (2)

Linux常见指令 ⑵ 补充man描述:用法:例子 echo描述:用法:例子 echo 字符串例子 echo 字符串 > 文件例子 追加重定向(>>)例子 输出重定向(>)来创建文件 && (>)来清空文件 cat描述:用法:例子 cat && cat 文件补充:例子 cat 文件 && cat &…...

shell脚本4

字符串变量 格式介绍&#xff1a;单引号 varabc 双引号 var"abc" 不使用引号 varabc 区别&#xff1a;单引号&#xff0c;原样输出&#xff0c;不会解析里面的变量 双引号&#xff0c;会解析变量&#xff0c;并且可以使用子双引号&#xff0c;需要转…...

递归思路讲解

最近刷到了树这一模块的算法题&#xff0c;树相关的算法题几乎都是用递归来实现的&#xff0c;但递归的思路却有点抽象&#xff0c;每次遇到递归&#xff0c;都是通过递归来深度或广度地遍历树&#xff0c;但对于递归遍历树的遍历路线&#xff0c;却有点抽象难懂&#xff0c;不…...

基于R语言APSIM模型高级应用及批量模拟

目录 专题一 APSIM模型应用与R语言数据清洗 专题二 APSIM气象文件准备与R语言融合应用 专题三 APSIM模型的物候发育和光合生产模块 专题四 APSIM物质分配与产量模拟 专题五 APSIM土壤水平衡模块 专题六 APSIM土壤碳、氮平衡模块 专题七 APSIM农田管理模块与情景模拟 专…...

Hyperf中的其它事项

Hyperf中的其它事项 关于 Hyperf 其它的内容我们就不多说了&#xff0c;毕竟框架这东西用得多了自然也就熟悉了。最重要的是——我的水平还不足以去深入地分析这个框架&#xff01; 好吧&#xff0c;其它的功能大家可以去官方文档详细了解&#xff0c;毕竟国人自己做的框架&a…...

【技术选型】Elasticsearch 和Solr那个香?

我们为什么在这里&#xff1f;我存在的目的是什么&#xff1f;我应该运动还是休息并节省能量&#xff1f;早起上班或晚起并整夜工作&#xff1f;我应该将炸薯条和番茄酱或蛋黄酱一起吃吗&#xff1f; 这些都是古老的问题&#xff0c;可能有也可能没有答案。其中一些是非常困难或…...

4面美团测试工程师,因为这个小细节,直接让我前功尽弃.....

说一下我面试别人时候的思路 反过来理解&#xff0c;就是面试时候应该注意哪些东西&#xff1b;用加粗部分标注了 一般面试分为这么几个部分&#xff1a; 一、自我介绍 这部分一般人喜欢讲很多&#xff0c;其实没必要。大约5分钟内说清楚自己的职业经历&#xff0c;自己的核…...

数据恢复软件EasyRecovery16下载安装步骤教程

EasyRecovery16是一款专业好用的数据恢复软件&#xff0c;软件提供了向导式的操作向导&#xff0c;可以有效地恢复电脑或者移动存储设备中丢失的各种文件&#xff0c;包括删除的文件、格式化丢失的文件和清空回收站的数据!千呼万唤始出来&#xff0c;大家期盼许久的EasyRecover…...

Springboot 自定义缓存配置 CacheManager 及redis集成

目录 前言 集成 maven依赖 CacheManagerConfig配置 redis配置 使用 Springboot 集成使用缓存 Cacheable CacheEvict 前言 现有项目中经常遇到的缓存集成问题&#xff0c;Springboot提供了统一的接口抽象与缓存管理器&#xff0c;可集成多种缓存类型&#xff0c;如 Co…...

JS 中七个改变原数组的方法

目录 一、push 二、pop 三、unshift 四、shift 五、splice 六、sort 七、reverse 一、push 在数组的尾部添加元素&#xff0c;并返回新的长度。 let arr [1] arr.push(2) console.log(arr) // [1, 2] 二、pop 删除数组最后面一个元素、并返回删除的元素。 let arr [1, …...

【笔试强训选择题】Day7.习题(错题)解析

作者简介&#xff1a;大家好&#xff0c;我是未央&#xff1b; 博客首页&#xff1a;未央.303 系列专栏&#xff1a;笔试强训选择题 每日一句&#xff1a;人的一生&#xff0c;可以有所作为的时机只有一次&#xff0c;那就是现在&#xff01;&#xff01;&#xff01; 文章目录…...

Vue电商项目--axios二次封装

postman测试接口 刚刚经过postman工具测试&#xff0c;发现接口果然发生了改变。 新的接口为http://gmall-h5-api.atguigu.cn 如果服务器返回的数据code字段200&#xff0c;代表服务器返回数据成功 整个项目&#xff0c;接口前缀都有/api字样 axios二次封装 XmlHttpRequ…...

人生四维度

人生四维度 不是有钱了就成功&#xff0c;你知道&#xff1b;人生的成功不止一种&#xff0c;你也知道。但成功还有哪种&#xff1f;你知道吗&#xff1f; 如果把人生的体验展开&#xff0c;我们可以得到四个维度&#xff0c;高度、深度、宽度和温度。 财富、权力、影响力 构…...

Python 调用 MessageBeep 播放系统音效

Python 调用 MessageBeep 播放 Windows 系统提示声音 Windows API 函数 "MessageBeep" 介绍 "Windows API MessageBeep"是一个用于发出系统提示音效的函数。它可以向用户发出一种预定义的声音&#xff0c;以指示事件的发生或某个条件的满足。例如&#xf…...

废物,我TMD一个985却斗不过专科生(大厂自动化测试2年被裁)

前言 看到标题&#xff0c;可能很多读者朋友恐怕又要骂我了&#xff0c;985这个特殊的字眼也确实异常晃眼&#xff0c;实际上现在985&#xff0c;211也越来越多&#xff0c;它能代表你能够进入到更高的平台&#xff0c;拿到“高级工厂”的入场券&#xff0c;但并不意味着你会成…...

p70 内网安全-域横向内网漫游 Socks 代理隧道技术(NPS、FRP、CFS 三层内网漫游)

数据来源 本文仅用于信息安全学习&#xff0c;请遵守相关法律法规&#xff0c;严禁用于非法途径。若观众因此作出任何危害网络安全的行为&#xff0c;后果自负&#xff0c;与本人无关。 ​ 必要基础知识点&#xff1a; 内外网简单知识内网 1 和内网 2 通信问题正向反向协议通…...

第三十二章 Unity Mecanim动画系统(上)

在上一章节中&#xff0c;我们介绍了Unity的旧版动画系统&#xff0c;本章节来介绍新版的Mecanim动画系统。新版的Mecanim动画系统实际是对旧版动画系统的升级。新版的Mecanim动画系统仍然是建立在动画片段的基础上的&#xff0c;只不过它给我们提供了一个可视化的窗口来编辑动…...

2.2 本地文件读取

本章学习目标&#xff1a; 知道CSV、Excel、JSON三种文件分别怎么读、会遇到什么常见问题理解每种文件格式的“坑”在哪里&#xff0c;以及如何向AI描述解决方案学会用“人话”告诉AI你要做什么&#xff0c;让AI生成代码不需要记住任何函数名或参数&#xff0c;只需要知道“有什…...

Termius v7.0.1汉化踩坑实录:从修改entry.js到完美中文界面的完整流程

Termius v7.0.1深度汉化实战&#xff1a;从逆向分析到完美本地化的技术探索 Termius作为一款广受开发者喜爱的SSH客户端&#xff0c;其v7.0.1版本在功能和性能上都有显著提升。但对于中文用户而言&#xff0c;官方未提供完整的本地化支持始终是个遗憾。本文将带你深入Termius内…...

ASML如何用“先买单后上菜”模式改写半导体设备研发规则

1. 从“被放鸽子”到“先买单后上菜”&#xff1a;ASML的450毫米晶圆博弈论在半导体这个以“摩尔定律”为信仰的行业里&#xff0c;每一次技术节点的跃进都伴随着天文数字的投入和巨大的商业风险。对于设备商而言&#xff0c;最怕的不是技术难题&#xff0c;而是倾尽所有研发出…...

正点原子 RK3562 Android14 集成 GStreamer 1.24.13(CLI + V4L2 插件)完整移植方案

RK3562 Android 系统中集成 GStreamer CLI V4L2 插件的完整移植方案&#xff0c;重点难点在于&#xff1a;预编译产物整理、Android.bp 自动生成、vendor 路径安装、运行时环境变量注入&#xff0c;以及 Android 动态链接 namespace 限制的排查。 正点原子RK3562J开发板瑞芯微…...

Next.js功能开关实践:用happykit/flags实现灰度发布与A/B测试

1. 项目概述&#xff1a;为什么我们需要一个功能开关系统&#xff1f;在软件开发&#xff0c;尤其是现代Web应用和微服务架构的迭代过程中&#xff0c;我们经常面临一个经典困境&#xff1a;新功能开发完成后&#xff0c;是直接全量发布给所有用户&#xff0c;还是先小范围灰度…...

Foundation Sites响应式设计原理:5个核心断点系统详解,打造完美移动优先体验

Foundation Sites响应式设计原理&#xff1a;5个核心断点系统详解&#xff0c;打造完美移动优先体验 【免费下载链接】foundation-sites The most advanced responsive front-end framework in the world. Quickly create prototypes and production code for sites that work …...

Windows安装安卓APK的终极指南:APK Installer免费工具完整教程

Windows安装安卓APK的终极指南&#xff1a;APK Installer免费工具完整教程 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 还在为Windows电脑无法直接运行安卓应用而烦…...

为VS Code集成GPT-4V视觉能力:VisualChatGPTStudio实战指南

1. 项目概述&#xff1a;当ChatGPT“睁开双眼”如果你和我一样&#xff0c;是个重度依赖ChatGPT进行编程、文档撰写和头脑风暴的开发者&#xff0c;那你一定体验过它的强大与局限。它能写出漂亮的代码片段&#xff0c;解释复杂的概念&#xff0c;但当你指着屏幕上的一个错误说“…...

ClawRouter:智能流量路由与内容处理工具的设计与实践

1. 项目概述与核心价值 最近在折腾一些网络相关的自动化任务时&#xff0c;发现了一个挺有意思的项目&#xff0c;叫 ClawRouter。乍一看这个名字&#xff0c;可能会联想到“爪子”和“路由器”&#xff0c;感觉像是某种抓取工具和网络设备的结合体。实际上&#xff0c;这个项目…...

别再折腾Windows了!用Mac或Linux搞定ACM LaTeX模板的字体难题(附保姆级配置流程)

跨平台LaTeX写作&#xff1a;为什么macOS和Linux是ACM模板的最佳选择 第一次接触ACM LaTeX模板的研究人员&#xff0c;往往会在字体兼容性问题上耗费大量时间——特别是Windows用户。当你反复尝试安装Libertine字体、解决各种编译错误时&#xff0c;是否想过问题可能出在操作系…...