一、前言

  在工作中遇到需要把配置文件加密的要求,很容易就在网上找到了开源插件 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开源工具自定义加密的更多相关文章

  1. 【Linux】【自学笔记】docker搭建一个spring-boot程序

    写在开始    最近捣腾Linux,安装虚拟机VMware并安装了CentOS 7系统,开始研究Linux,但是无从下手,就结合工作中用到的东西一步一步研究,事实并不是那么顺利.特此开博客,记录在过程 ...

  2. SpringBoot:配置文件及自动配置原理

    西部开源-秦疆老师:基于SpringBoot 2.1.6 的博客教程 秦老师交流Q群号: 664386224 未授权禁止转载!编辑不易 , 转发请注明出处!防君子不防小人,共勉! SpringBoot ...

  3. 第一个SpringBoot程序

    第一个SpringBoot程序 例子来自慕课网廖师兄的免费课程 2小时学会SpringBoot Spring Boot进阶之Web进阶 使用IDEA新建工程,选择Spring Initializr,勾 ...

  4. SpringBoot 读取配置文件及profiles切换配置文件

    读取核心配置文件 核心配置文件是指在resources根目录下的application.properties或application.yml配置文件,读取这两个配置文件的方法有两种,都比较简单. 先创 ...

  5. [SpringBoot] - 了解什么是SpringBoot,使用SpringBoot的配置文件

    首先明白Spring是什么,Spring是Java开发的一个框架,为了方便简化Java开发. 什么是注解(注解式开发)? Spring的常用注解有哪些? 假如用SpringBoot构建一个网站程序,应 ...

  6. 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 ...

  7. SpringBoot系列:二、SpringBoot的配置文件

    SpringBoot的配置文件在resources文件夹下 springboot的配置文件支持两种形式的写法,一种是经典的properties另一种是yml yml通过空格缩进的形式来表示对象的层级关 ...

  8. 「快学SpringBoot」配置文件的加载顺序和配置项默认值设置

    前言 有的时候,配置信息是我们无法在开发过程中就能确定的.比如,给客户开发的项目,客户需要根据自身的情况自定义配置,如数据库配置,加密密钥配置等等.这时候,就需要把配置文件放在外面,让用户自定义配置部 ...

  9. Springboot:第一个Springboot程序(一)

    1.创建Springboot项目 选择创建Springboot项目: 填写项目基本信息: 选择Springboot版本以及web依赖(内嵌tomcat): 创建完成: 创建完成后 等待构建maven项 ...

随机推荐

  1. Beta冲刺(1/5)(麻瓜制造者)

    今天小组进行了第一次冲刺,虽然新组员还没有确定. 今日完成任务 邓弘立:修改登录代码 李佳铭: 用户收藏UI代码编写 江郑: 进行了后台管理员界面ui的设计和环境的搭建 刘双玉:后台github仓库建 ...

  2. dns与wins的区别

    将主机名字解析称为ip地址有四种办法: dns.winds.hosts文件.lmhosts文件 dns和hosts是很多系统cout采用的一个名称解析的方法,wins和lmhosts是微软的操作系统此 ...

  3. 20145236《网络攻防》Exp5 MSF基础应用

    20145236<网络攻防>Exp5 MSF基础应用 一.基础问题回答 解释exploit,payload,encode是什么: exploit就是负责负载有用代码的交通工具,先通过exp ...

  4. 简单使用metamascara

    package.json 配置文件信息 { "name": "test-mascara", "version": "1.0.0&q ...

  5. squid调整

    Squid采用新方案部署的调整步骤一,隔离二,修改三,验证四,波及==============================[1] 把被引用到的待修改对像实例,从前端应用负载nginx的配置中摘出 ...

  6. python关联eureka实现高并发

    弥补网上python关联微服务空白,结合多个pythonweb框架实践,找到一个可行的方案python加入到eureka,实现java和python的完美结合 # coding:utf- import ...

  7. java 文件字节和字符流 缓冲流

    流的原理 1) 在 Java 程序中,对于数据的输入/输出操作以“流”(stream) 方式进行:2) J2SDK 提供了各种各样的“流”类,用以获取不同种类的数据:程序中通过标准的方法输入或输出数据 ...

  8. linux中断源码分析 - 初始化(二)

    本文为原创,转载请注明:http://www.cnblogs.com/tolimit/ 本篇文章主要讲述源码中是如何对中断进行一系列的初始化的. 回顾 在上一篇概述中,介绍了几个对于中断来说非常重要的 ...

  9. [04] Bean的实例化和多个配置文件

    之前我们已经提到过,Spring的核心能力之一就是IOC机制,从上章的示例中我们也可以看到,Spring中的ApplicationContext充当了一个实例化对象的容器的角色,并管理着它们的生命周期 ...

  10. C# 如何物理删除有主外键约束的记录?存储过程实现

    十年河东,十年河西,莫欺少年穷 本篇主旨是如何物理删除有主外键约束的记录!那么,我们从主外键走起! 下面新建三张有主外键约束的表,分别为:系/学院表,专业班表,学生表,如下: CREATE TABLE ...