关于对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项 ...
随机推荐
- January 05th, 2018 Week 01st Friday
You can't make decisions based on fear and the possibility of what might happen. 不要因为恐惧未知的可能而妄下决定. P ...
- Git的上传步骤
Git的上传步骤 1.Git的命令基础 Git是当下最流行的版本控制工具(VCS),由linux系统之父linus开发.它能实现 团队中的代码协作开发,它在代码同步和代码管理方面功能强大,理念先进. ...
- Django之数据表增删改查
Django数据增删改查: 上课代码 from django.shortcuts import render,HttpResponse # Create your views here. from a ...
- 阿里巴巴Java开发手册要点笔记 (一)
1:[强制]Object 的 equals 方法容易抛空指针异常,应使用常量或确定有值的对象来调用 equals. 正例:"test".equals(object); 反例:obj ...
- gulp学习-metamask前端使用
https://www.gulpjs.com.cn/docs/getting-started/ ,这个是3.9.0版本 后面发现安装的版本是4.0.0,看下面这个: https://github.co ...
- 移动App测试实战—专项测试
我们在进行了手工的功能测试之后,也开发了一些自动化测试用例,并且做了性能测试之后,测试工作看似比较完整了.但是当我们的App在大量的用户那里被安装和使用的时候,还是会有很多我们之前没有预料的问题 ...
- Qt 打包发布程序
利用Qt Creator写好程序,选择对应的编译器编译程序. 编译完成会在项目同级目录生成对应的目录来保存编译后的输出. 打包程序就要选择Qt自带的CMD工具,分别有下面几种. 比如,打包VS2017 ...
- 理解Vuex的辅助函数mapState, mapActions, mapMutations用法
在讲解这些属性之前,假如我们项目的目录的结构如下: ### 目录结构如下: demo1 # 工程名 | |--- dist # 打包后生成的目录文件 | |--- node_modules # 所有的 ...
- python条件、循环语句
既然讲到语句,那先说明一下语句块.语句块不是一种语句,是一组语句.在条件为真时执行或者多次的一组语句.主要注意其格式,用冒号来标识语句块的开始,块中每行缩进相同的量,一般4个空格(tab字符位置为8个 ...
- odoo系统之产品表
# 输入产品带出它默认的包装方式\单位\品名\规格 def get_product_unit(self, cr, uid,ids,product_id,pcust_order_no,pdate_pla ...