关于对springboot程序配置文件使用jasypt开源工具自定义加密
一、前言
在工作中遇到需要把配置文件加密的要求,很容易就在网上找到了开源插件 jasypt (https://github.com/ulisesbocchio/jasypt-spring-boot#customEncryptor),根据官方说明和网上其他示例很容易搞定加密解密,但是本功能要求使用自定义的加密解密方法,查了下网上没有示例,于是看了下官方文档中关于自定义加密解密的部分说明。
官方说明表达的意思为如果你需要自定义加密解密那么就在Spring Context中定义自己的StringEncryptor bean,这样将忽略默认加密器。官方默认的bean的名称为
@Bean(“ jasyptStringEncryptor ”)
但是我们可以通过官方提供的 jasypt.encryptor.bean=你自己定义的名称 进行更改(开始1.5以上版本,需要写在配置文件中这里为Property文件格式 yml文件格式类似只是将.换成层级结构)
jasypt:
encryptor:
bean: aaa
这个bean要求返回一个对象,这个对象实现了一个名字叫做StringEncryptor接口,也就是说我们自己实现的这个接口中的方法的话就可以代替官方指定的加密解密方法了。而且如果是自己实现加密解密方法也代表我们不一定有必要把密匙放到配置文件中(这一句不明白的可以看一下其他网上实现的标准示例)。
二、具体实现
第一步我们先在pom.xml文件中引用这个开源插件
<!-- 加密解密 -->
<dependency>
<groupId>com.github.ulisesbocchio</groupId>
<artifactId>jasypt-spring-boot-starter</artifactId>
<version>2.1.0</version>
</dependency>
首先我们实现StringEncryptor接口,该接口中的两个方法分别是encrypt(加密方法),decrypt(解密方法)
import org.jasypt.encryption.StringEncryptor;
public class DESEncrypt implements StringEncryptor {
//加密
@Override
public String encrypt(String message) {
try {
return 自己定义的方法的返回值;//如果方法中包含加密密匙那么就完全没必要在配置文件中写
} catch (Exception e) {
e.printStackTrace();
return message;
}
}
//解密
@Override
public String decrypt(String encryptedMessage) {
try {
return 自己定义的方法的返回值;
} catch (Exception e) {
e.printStackTrace();
return encryptedMessage;
}
}
}
然后我们去定义一下相应的bean
import org.jasypt.encryption.StringEncryptor;
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;
}
}
改动的话只有这两个文件 如果不实现官方其他的自定义的话 配置文件中的更改没什么变化和标准实现一样 spring.datasource.username=ENC(zj4OUZ3/mmHV0JOgCdg8qQ==)
只不过enc括号里面的加密信息是有你自己的加密方法生成的 很简便的几部就能完成自定义操作。
关于对springboot程序配置文件使用jasypt开源工具自定义加密的更多相关文章
- 【Linux】【自学笔记】docker搭建一个spring-boot程序
写在开始 最近捣腾Linux,安装虚拟机VMware并安装了CentOS 7系统,开始研究Linux,但是无从下手,就结合工作中用到的东西一步一步研究,事实并不是那么顺利.特此开博客,记录在过程 ...
- SpringBoot:配置文件及自动配置原理
西部开源-秦疆老师:基于SpringBoot 2.1.6 的博客教程 秦老师交流Q群号: 664386224 未授权禁止转载!编辑不易 , 转发请注明出处!防君子不防小人,共勉! SpringBoot ...
- 第一个SpringBoot程序
第一个SpringBoot程序 例子来自慕课网廖师兄的免费课程 2小时学会SpringBoot Spring Boot进阶之Web进阶 使用IDEA新建工程,选择Spring Initializr,勾 ...
- SpringBoot 读取配置文件及profiles切换配置文件
读取核心配置文件 核心配置文件是指在resources根目录下的application.properties或application.yml配置文件,读取这两个配置文件的方法有两种,都比较简单. 先创 ...
- [SpringBoot] - 了解什么是SpringBoot,使用SpringBoot的配置文件
首先明白Spring是什么,Spring是Java开发的一个框架,为了方便简化Java开发. 什么是注解(注解式开发)? Spring的常用注解有哪些? 假如用SpringBoot构建一个网站程序,应 ...
- idea实现第一个springboot程序
1.环境准备 JDK:1.8 Apache Maven: 3.6.1 IntelliJ IDEA 2019.1.3 x64 SpringBoot 1.5.9.RELEASE:1.5.9: 1.1.MA ...
- SpringBoot系列:二、SpringBoot的配置文件
SpringBoot的配置文件在resources文件夹下 springboot的配置文件支持两种形式的写法,一种是经典的properties另一种是yml yml通过空格缩进的形式来表示对象的层级关 ...
- 「快学SpringBoot」配置文件的加载顺序和配置项默认值设置
前言 有的时候,配置信息是我们无法在开发过程中就能确定的.比如,给客户开发的项目,客户需要根据自身的情况自定义配置,如数据库配置,加密密钥配置等等.这时候,就需要把配置文件放在外面,让用户自定义配置部 ...
- Springboot:第一个Springboot程序(一)
1.创建Springboot项目 选择创建Springboot项目: 填写项目基本信息: 选择Springboot版本以及web依赖(内嵌tomcat): 创建完成: 创建完成后 等待构建maven项 ...
随机推荐
- Beta冲刺博客集合贴
Beta阶段第一次冲刺 Beta阶段第二次冲刺 Beta阶段第三次冲刺 Beta阶段第四次冲刺 Beta阶段第五次冲刺 Beta阶段总结博客
- node学习笔记_04 express相册
学习node用express框架做了一个相册展示及上传功能: 1.没有连接服务器,这里全部是操作文件夹 2.安装上传文件的依赖formidable,npm install --save formida ...
- Django之知识总结
1. 课程介绍 - 数据类型 - 函数 - 面向对象三大特性:继承,封装,多态 - socket:本质传输字节:所有网络通信都基于socket - 数据库设计:单表.FK.M2M (自己作业:自己领域 ...
- mac下更改Jupyter notebook工作目录
Jupyter notebook运行之后,默认的工作目录在mac下是个人文件夹,在windows下貌似也是如此.显然不太合理,需要修改它. 具体办法是: 进入终端命令行模式,输入下面的代码: jupy ...
- 踏得网互联网新技术垂直搜索服务和分享 - HTML5动效/特效/动画搜索
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/iefreer/article/details/34917729 当前主流搜索引擎在解决互联网技术创意 ...
- MetaMask/obs-store
https://github.com/MetaMask/obs-store ObservableStore ObservableStore is a synchronous in-memory sto ...
- unhandled exception(没有处理异常)
背景 今天在代码中抛出了Exception类, 但是出现了代码报错 意思是,未处理异常 原因 因为Exception是check异常,也就是必须在代码层面直接捕获处理的,这类异常有IOExceptio ...
- OnlineJudgeFE之前端二次开发
之前我们在这篇文章青岛大学开源OJ平台搭建 讲了关于它的安装和部署. 今天我们讨论如何对其进行二次开发.首先谈谈前端的二次开发. 如果想要对青岛大学的OJ项目进行二次开发,目前我觉得要满足这么几个要求 ...
- 1115 洛谷luogu最大子段和
题目描述 给出一段序列,选出其中连续且非空的一段使得这段和最大. 输入输出格式 输入格式: 第一行是一个正整数NNN,表示了序列的长度. 第二行包含NNN个绝对值不大于100001000010000的 ...
- Qt 获取文件夹下所有文件
Qt 获取文件夹下所有文件代码如下: QStringList getFileNames(const QString &path) { QDir dir(path); QStringList n ...