关于对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项 ...
随机推荐
- Cocoapods的安装和使用(2018-08-07更新)
一.Cocoapods的安装 第一步:打开终端 第二步:修改ruby镜像引用 gem source --remove https://rubygems.org/ gem sources -a http ...
- 【Alpha - 五成胜算队】博客列表
一. 团队Alpha冲刺博客 [Alpha 冲刺] 1/12 [Alpha 冲刺] 2/12 [Alpha 冲刺] 3/12 [Alpha 冲刺] 4/12 [Alpha 冲刺] 5/12 [Alph ...
- Beta冲刺! Day2 - 砍柴
Beta冲刺! Day2 - 砍柴 今日已完成 晨瑶:大致确定了文章推荐的算法思路(Content-based recommender):理清了不少feature的事宜 昭锡:修复了日期选择越界时导致 ...
- PyQt5--TextDrag
# -*- coding:utf-8 -*- ''' Created on Sep 21, 2018 @author: SaShuangYiBing Comment: ''' import sys f ...
- linux位数查看
#getconf LONG_BIT
- Linux基础第六课——grep|awk|sort|uniq
管道符 | 前面的输出作为后面的输入 grep 可以理解为正则表达式 grep [参数] 文件名 -c 打印符合要求的行数 -v 打印不符合要求的行 -n 在输出符合要求的行的同时连同行号一起输出 - ...
- Excel里面Left这个怎么用?
LEFT 返回文本字符串中第一个字符或前几个字符LEFT(A2, 4)LEFT 返回前 4 个字符,因为每个字符按 1 计数.无论您计算机上的默认语言设置如何,函数 LEFT 都返回前 4 个字符.
- <数据结构与算法分析>读书笔记--运行时间中的对数及其分析结果的准确性
分析算法最混乱的方面大概集中在对数上面.我们已经看到,某些分治算法将以O(N log N)时间运行.此外,对数最常出现的规律可概括为下列一般法则: 如果一个算法用常数时间(O(1))将问题的大小削减为 ...
- Java发送QQ邮件
面试的时候被问到这个问题,别人问我用Java发过邮件没有,被问得一脸懵逼.然后就研究了一下,不是很难,按照网上的方法折腾了几天就搞出来了. 首先,使用QQ邮箱发送邮件之前需要在邮箱里面配置,开启pop ...
- 关于TerraBuilder的扩展开发
熟悉Skyline的朋友,可能会发现,在最新的6.6的产品体系中,TerraBuilder中用于生成三维地形场景的模块,改成了TerrainBuilder. 通常情况下,这款软件模块,我们主要用它来进 ...