SpringBoot集成jasypt对yml文件指定参数加密并自定义@bean隐藏密钥

1、查看SpringBoot和jasypt对应版本。
Jasypt 1.9.x 通常与 Spring Boot 1.5.x 相对应。
Jasypt 2.1.x 通常与 Spring Boot 2.0.x 相对应。
Jasypt 3.x 通常与 Spring Boot 2.1.x相对应。
2、引入maven

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

3、新建JasyptController方法来获取加密解密、也可以用main方法获取。

@RequestMapping("/m")
public class JasyptController {@GetMapping("/o")public String output(String key) {String message = "www.baidu,com";String strJasyp = stringEncryptor(message, key, true);return "ENC("+strJasyp+")";}@PostMapping("/s")//这里使用JSONObject 接收、防止有特殊符号被转义掉。public String select(@RequestBody JSONObject jsonObject) {String message = "www.baidu,com";String jasyptEncrypt1 = stringEncryptor(message, jsonObject.getString("key"), false);return jasyptEncrypt1;}public static String stringEncryptor(String secretKey, String message, boolean isEncrypt) {PooledPBEStringEncryptor pooledPBEStringEncryptor = new PooledPBEStringEncryptor();pooledPBEStringEncryptor.setConfig(getSimpleStringPBEConfig(secretKey));String result = isEncrypt ? pooledPBEStringEncryptor.encrypt(message) : pooledPBEStringEncryptor.decrypt(message);return result;}private static PBEConfig getSimpleStringPBEConfig(String secretKey) {SimpleStringPBEConfig config = new SimpleStringPBEConfig();config.setPassword(secretKey);config.setSaltGeneratorClassName("org.jasypt.salt.RandomSaltGenerator");config.setIvGeneratorClassName("org.jasypt.iv.RandomIvGenerator");config.setStringOutputType("base64");config.setPoolSize("1");config.setAlgorithm("PBEWITHHMACSHA512ANDAES_256");//加密方法config.setKeyObtentionIterations("1000");config.setProviderName("SunJCE");return config;}public static void main(String[] args) throws Exception {String message = "www.baidu,com";//密钥String password = "www";String passwordJasyp = stringEncryptor(message, password, true);System.out.println("password:ENC("+passwordJasyp+")");String jasyptEncrypt = stringEncryptor(message, "加密后的字符串", false);System.out.println(jasyptEncrypt);}}

4、加密后的密码放入对应的配置文件里面。加密后的密码要放入ENC()进行后续解析。并加入jasypt配置。

driver-class-name: dm.jdbc.driver.DmDriver
url: ENC(19ZBcsVnQdVRRQwsQyqyiCwI1Rf7jmB/2H6VXeSSaKGpzy2UU1+L1pM6/lrfNQnbCo=)
username: ENC(9Df7wDeAaOpDmWp/l6cuJRwyCZNd/KCN)
password: ENC(U+A2cGFir41Uaf1/BzNT3G9ecYw6)
jasypt:encryptor:bean: encryptorBean //此处为自定义,用来隐藏密钥,不在环境配置及配置文件直接出现。

5、增加@Bean(“encryptorBean”)进行秘钥等配置解析。

@Configuration
public class JasyptConfig {@Bean("encryptorBean")public StringEncryptor stringEncryptor() {PooledPBEStringEncryptor encryptor = new PooledPBEStringEncryptor();SimpleStringPBEConfig config = new SimpleStringPBEConfig();config.setPassword("www.baidu.com");config.setAlgorithm("PBEWITHHMACSHA512ANDAES_256");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);return encryptor;}}

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

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

相关文章

CSS - 选择器

目录 一、CSS的基本语法格式&#xff1a; 二、常见的CSS选择器 ​编辑1.标签选择器 2.类选择器 3.id选择器 4.复合选择器 5.通用选择器 三、常见的CSS样式 1.color 2.font-size 3.border 4.width/height 5.padding 6.margin 四、CSS的引入方式 1.行内引入 …

Tableau-BI仪表盘搭建

目录 经营数据总览 经营数据详情 每日营收数据 每日流量数据 新老客占比 平台占比 门店占比 投放情况 订单分布 配送分布 汇总搭建仪表板 构思仪表盘布局 经营数据总览 数据总览表&#xff0c;显示的是数据&#xff0c;就拖入文本中&#xff0c;其他同样加入到已经…

开源免费的定时任务管理系统:Gocron

Gocron&#xff1a;精准调度未来&#xff0c;你的全能定时任务管理工具&#xff01;- 精选真开源&#xff0c;释放新价值。 概览 Gocron是github上一个开源免费的定时任务管理系统。它使用Go语言开发&#xff0c;是一个轻量级定时任务集中调度和管理系统&#xff0c;用于替代L…

JavaEE初阶-多线程5

文章目录 一、线程池1.1 线程池相关概念1.2 线程池标准类1.3 线程池工厂类1.4 实现自己的线程池 二、定时器2.1 java标准库中的定时器使用2.2 实现一个自己的定时器2.2.1 定义任务类2.2.2 定义定时器 一、线程池 1.1 线程池相关概念 池这个概念在计算机中比较常见&#xff0c…

[笔试训练](十九)

目录 055:小易的升级之路 056:礼物的最大价值 057:对称之美 055:小易的升级之路 小易的升级之路_牛客题霸_牛客网 (nowcoder.com) 题目&#xff1a; 题解&#xff1a; 根据题意简单模拟即可&#xff0c;可单独写gcd函数求最大公因数。 int gcd(int a, int b) { if (…

抖音抖加如何投放效果最好?

抖音平台上的抖加投放是一种有效的推广方式,但对于一些新手来说,可能会遇到投放效果不佳的情况。为了帮助大家提高抖加投放的效,下面分享一些抖音抖加投放技巧。 一、选择合适的投放模式 抖音抖加有三种投放模式:系统智能投放、自定义定向投放以及达人相似粉丝投放。不同…

Redis——Redis数据分片的三种算法

Redis的数据分片通常是为了实现水平扩展&#xff0c;将数据分散到多个Redis节点上&#xff0c;以提高系统的容量和性能。在Redis的不同实现和集群方案中&#xff0c;数据分片的算法有所不同。以下是Redis数据分片的三种常见算法&#xff1a; 哈希取模分片&#xff08;Hash Modu…

数字水印 | 基于小波变换的数字水印技术

&#x1f34d;原文&#xff1a; 基于小波变换的数字水印技术 &#x1f34d;写在前面&#xff1a; 本文属搬运博客&#xff0c;自己留存学习。 正文 小波变换 把一个信号分解成由基本小波经过移位和缩放后的一系列小波&#xff0c;它是一种 “时间——尺度” 信号的多分辨率分…

Python中如何将小数转化为百分数进行输出

小数转化为百分数 Python中如何将小数转化为百分数进行输出基本概念使用字符串格式化1. 使用字符串格式化操作符 %2. 使用str.format()方法3. 使用f-string&#xff08;格式化字符串字面量&#xff09; **重点内容**&#xff1a;**无论是通过使用%格式化操作符、str.format()方…

AtCoder Beginner Contest 310 E题 NAND repeatedly

E题&#xff1a;NAND repeatedly 标签&#xff1a;动态规划题意&#xff1a;给定一个长度为 n n n的 01 01 01字符串 A i A_i Ai​&#xff0c;给定规则&#xff1a; 0 ⊼ 0 1 , 0 ⊼ 1 1 , 1 ⊼ 0 1 , 1 ⊼ 1 0 0⊼01,0⊼11,1⊼01,1⊼10 0⊼01,0⊼11,1⊼01,1⊼10。 求 ∑…

Linux进程间通信——匿名管道和命名管道

文章目录 一、引言二、管道的基本原理1、管道的定义与结构2、管道的工作原理 三、匿名管道&#xff08;Anonymous Pipe&#xff09;1、匿名管道的概念2、匿名管道的创建与使用3、匿名管道的读写规则4、匿名管道的特点5、使用匿名管道实现进程池 四、命名管道&#xff08;Named …

MySQL的复合查询

多表查询 MySQL中的多表查询是一个强大的功能&#xff0c;允许你在一个查询中组合来自多个表的数据。这通常通过JOIN语句实现&#xff0c;但也可以使用子查询或集合操作符&#xff08;如UNION&#xff09;。下面我将介绍几种常见的多表查询方式及其用途。 INNER JOIN&#xf…

学习java第六十八天

在AOP术语中&#xff0c;切面的工作被称为通知。通知实际上是程序运行时要通过Spring AOP框架来触发的代码段。 Spring切面可以应用5种类型的通知&#xff1a; 前置通知&#xff08;Before&#xff09;&#xff1a;在目标方法被调用之前调用通知功能&#xff1b; 后置通知&a…

计算机视觉——基于改进UNet图像增强算法实现

1. 引言 在低光照条件下进行成像非常具有挑战性&#xff0c;因为光子计数低且存在噪声。高ISO可以用来增加亮度&#xff0c;但它也会放大噪声。后处理&#xff0c;如缩放或直方图拉伸可以应用&#xff0c;但这并不能解决由于光子计数低导致的低信噪比&#xff08;SNR&#xff…

Oracle如何实现rsa加密和例子

在Oracle数据库中实现RSA加密通常需要使用Java编写的存储过程&#xff0c;因为Oracle自身并不直接支持RSA加密的原生函数。下面是一个基本的例子&#xff0c;说明如何在Oracle中使用Java存储过程来实现RSA加密。 首先&#xff0c;你需要一个Java类&#xff08;比如我们称之为R…

【Spring】@ServerEndpoint 与 Spring 是如何集成的

文章目录 前言表象理解后记更多文章 前言 最近工作需要用到 Websocket 协议。好奇来自 Jdk 包的 ServerEndpoint 是如何与 Spring Boot 集成的&#xff0c;特此记录一下结论。 表象 如果要暴露形如 ws://${ip}:${port}/ws 的服务地址&#xff0c;用于websocket 通信&#xf…

STC8增强型单片机开发——串口调试UART

一、什么是串口 串口是一种在数据通讯中广泛使用的通讯接口&#xff0c;通常我们叫做UART (通用异步收发传输器Universal Asynchronous Receiver/Transmitter)&#xff0c;其具有数据传输速度稳定、可靠性高、适用范围广等优点。在嵌入式系统中&#xff0c;串口常用于与外部设备…

关于Speech processing Universal PERformance Benchmark (SUPERB)基准测试及衍生版本

Speech processing Universal PERformance Benchmark &#xff08;SUPERB&#xff09;是由台湾大学、麻省理工大学&#xff0c;卡耐基梅隆大学和 Meta 公司联合提出的评测数据集&#xff0c;其中包含了13项语音理解任务&#xff0c;旨在全面评估模型在语音处理领域的表现。这些…

基于深度学习神经网络的AI图像PSD去雾系统源码

第一步&#xff1a;PSD介绍 以往的研究主要集中在具有合成模糊图像的训练模型上&#xff0c;当模型用于真实世界的模糊图像时&#xff0c;会导致性能下降。 为了解决上述问题&#xff0c;提高去雾的泛化性能&#xff0c;作者提出了一种Principled Synthetic-to-real Dehazing (…

Windows 跨服务器进行 MYSQL备份脚本

Windows 服务器进行 MYSQL备份的脚本&#xff0c;使用该脚本前&#xff0c;请先测试一下 1、新建一个文本文档 2、将下面代码放入文本文档中&#xff0c;保存退出 echo off :: 命令窗口名 title mysql-bak:: 参数定义 set "Y%date:~,4%" set "m%date:~5,2%&qu…