springboot使用jasypt对配置文件加密,加密数据库连接

springboot使用jasypt对配置文件加密

    • springboot配置
    • 通过明文获取加密的值
    • 通过密文和盐值解密得到明文
    • 代码封装工具类

<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%2B8username: root      #也可以加密用户名,依然是ENC()格式,这里没有进行加密password: ENC(OVL1V3KDtTa8w9IIOVuSdeyCOsZXAN0+)  #加密了密码,ENC()括号内为密文driver-class-name: com.mysql.cj.jdbc.Drivermapper-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);}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/641506.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

机器视觉之尺度不变特征变换(SFIT)算法的实例教程

话不多说&#xff0c;上代码 原理和应用场景在文章最后 import cv2 import numpy as np# 读取图片 img1 cv2.imread(你自己的第一张照片的路径, 0) #像我这样&#xff1a; img1 cv2.imread(/home/local/wang/Downloads/MicrosoftTeams-image (12).png, 0)img2 cv2.imread(你…

【网络】传输层TCP协议

目录 一、概述 2.1 运输层的作用引出 2.2 传输控制协议TCP 简介 2.3 TCP最主要的特点 2.4 TCP连接 二、TCP报文段的首部格式 三、TCP的运输连接管理 3.1 TCP的连接建立(三次握手) 3.2 为什么是三次握手&#xff1f; 3.3 为何两次握手不可以呢&#xff1f; 3.4 TCP的…

docker 安装手册

docker 安装手册 第一步卸载旧的docker (如果安装过Docker否则跳过此步) 以防万一最好执行一遍 yum -y remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine 第二步&#xff0c;安装相关…

网络安全概述---笔记总结

网络安全概述 网络安全---Cyberspace security 2003年美国提出网络空间的概念 --- 一个由信息基础设施组成的互相依赖的网络。我国官方文件定义&#xff1a;网络空间为继海&#xff0c;陆&#xff0c;空&#xff0c;天以外的第五大人类活动领域 发展阶段&#xff1a; 通信保…

Unity UnityWebRequest 向php后端上传图片文件

之前测试功能写过一次&#xff0c;因为代码忘记保存&#xff0c;导致真正用到的时候怎么也想不起来当初怎么写的了&#xff0c;复现后还是写个文章记录一下&#xff0c;省的下次再忘记。 php后端 /*** 图片保存到本地*/ public function uploadLocalImage() {try {$img $thi…

Yolov8不废话!参考手册!

Yolov8使用 yolo taskdetect modetrain modelyolov8n.pt args...classify predict yolov8n-cls.yaml args...segment val yolov8n-seg.yaml args...export yolov8n.pt formatonnx args...使用Ultralytics YOLO进行模型训练 …

LeetCode454. 四数相加 II和1.两数之和

1. 两数之和 哈希表 提示 给定一个整数数组 nums 和一个整数目标值 target&#xff0c;请你在该数组中找出 和为目标值 target 的那 两个 整数&#xff0c;并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是&#xff0c;数组中同一个元素在答案里不能重复出…

2024年安全员-C证证考试题库及安全员-C证试题解析

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 2024年安全员-C证证考试题库及安全员-C证试题解析是安全生产模拟考试一点通结合&#xff08;安监局&#xff09;特种作业人员操作证考试大纲和&#xff08;质检局&#xff09;特种设备作业人员上岗证考试大纲随机出的…

力扣第92题——反转链表 II(C语言题解)

题目描述 给你单链表的头指针 head 和两个整数 left 和 right &#xff0c;其中 left < right 。请你反转从位置 left 到位置 right 的链表节点&#xff0c;返回 反转后的链表 。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5], left 2, right 4 输出&#xff1…

Linux的一些快捷键(hot keyboard)

Ctrl Alt t&#xff1a;打开bash&#xff08;就是命令框窗口&#xff09; Ctrl Alt F3~F6&#xff1a;打开tty终端&#xff08;纯命令行终端&#xff0c;每个Linux发行版不相同&#xff0c;我的是Ubuntu20版&#xff09; Alt F4&#xff1a;关闭当前窗口&#xff08;Windo…

npm安装yarn

一、关于yarn 有时候使用npm构建项目&#xff0c;拉取第三方库的时候很慢不稳定&#xff0c;而yarn就是解决这一痛点的利器。yarn具有以下优良特性&#xff1a; 1、速度快 Yarn 缓存了每个下载过的包&#xff0c;所以再次使用时无需重复下载&#xff0c; 同时利用并行下载…

知识图谱的广泛应用与价值

目录 前言1 语义搜索2 知识问答2.1 问答对的深度关联2.2 文本挖掘与答案精准性2.3 知识图谱问答的全面服务 3 辅助推荐4 辅助大数据分析4.1 知识图谱推理的应用4.2 知识图谱的数据分析4.3 动态本体技术的引入 5 故障诊断5.1 故障诊断系统的应用5.2 知识图谱在语言理解中的作用5…

【书生·浦语大模型实战营06】《OpenCompass 大模型评测》学习笔记

《OpenCompass 大模型评测》 文档&#xff1a;OpenCompass大模型评测教程 1、主观评测 2、提示词工程 李华每周给2个不同的朋友写一封3页的信&#xff0c;一周写两次。他一年总共写了多少页的信? 李华每周给2个不同的朋友写一封3页的信&#xff0c; 一周写两次。他一年总共…

初识java—java的运算符以及程序逻辑结构

文章目录 算术运算符关系运算符逻辑运算符(重点)逻辑与 &&逻辑 ||逻辑非&#xff01;短路求值&#xff08;重点&#xff09; 程序逻辑控制顺序结构分支结构&#xff08;if else结构&#xff09;switch语句基本语法 循环结构breakcontinue 从键盘输入 算术运算符 基本四…

pygame入门学习(四)位图的使用

大家好&#xff01;我是码银&#x1f970; 欢迎关注&#x1f970;&#xff1a; CSDN&#xff1a;码银 公众号&#xff1a;码银学编程 载入图片 pygame.image.load( )&#xff0c;Pygame 可以通过pygame.image.load( )函数处理位图文件。 大致可以支持以下文件&#xff1a;JPG…

npm run serve和npm run dev的区别

1. 功能&#xff1a;通常&#xff0c;"npm run serve"用于启动开发服务器&#xff0c;提供实时的开发环境&#xff0c;支持自动重新加载和热模块替换。这样可以在开发过程中实时查看代码更改的效果。而"npm run dev"可以是一个自定义的指令&#xff0c;用于…

Linux--文件链接

目录 1.建立软连接 2.建立硬链接 3.什么是软链接 Linux中软链接的应用场景 4.什么是硬链接 5.文件与目录的硬链接数 6.软链接与硬链接的区别 用户无法对目录建立硬链接&#xff0c;可以建立软连接。 在Linux中文件的链接有两种&#xff1a;1.软连接 2.硬链接 1.建立软…

Oracle 高级网络压缩 白皮书

英文版白皮书在这里 或 这里。 本文包括了对英文白皮书的翻译&#xff0c;和我觉得较重要的要点总结。 执行概述 Oracle Database 12 引入了一项新功能&#xff1a;高级网络压缩&#xff0c;作为高级压缩选项的一部分。 本文概述了高级网络压缩、其优点、配置细节和性能分析…

HTML+CSS:3D轮播卡片

效果演示 实现了一个3D翻转的卡片动画&#xff0c;其中每个卡片都有不同的图片和不同的旋转角度。整个动画循环播放&#xff0c;无限次。整个页面的背景是一个占据整个屏幕的背景图片&#xff0c;并且页面内容被隐藏在背景图片之下。 Code <div class"container"…

redis 入门及相关知识汇总

什么是 Redis &#xff1f; 1&#xff0c;相对于mysql &#xff0c;oracle &#xff0c; 这种关系西数据库&#xff0c; 我们还有非关系数据库服务&#xff0c;他的产生是为了&#xff0c;解决常规数据库的并发能力&#xff0c;传统的关系型数据库受限于IO 和性能瓶颈&#xff…