Spring Boot系列8-使用jasypt加密配置文件内容简单版

猿份哥 1年前 ⋅ 1001 阅读 ⋅ 0 个赞
文章目录
  1. 1.为什么配置文件需要加密
  2. 2.首先引入pom依赖文件
  3. 3.在application.properties或者application.yml文件中配置加密密码
  4. 4.获取加密内容例如:我想加密的内容是username和pwd
  5. 5.将加密串填写到application配置文件
  6. 6.但是我们的项目可能需要动态的传入密码而不是写死在配置文件里面,如果写死在配置文件里面就像将们上了锁然后又把钥匙交给了小偷一样。毫无意义!

使用jasypt加密配置文件内容提高项目的安全性简单版

为什么配置文件需要加密

spring boot项目中的application.properties或application.yml里面包含了mysql,redis,第三方的密钥等等 这些配置都是明文,所以我们为了提高安全性就需要将这些明文混淆了。jasypt可以很轻松的做到,下面我们来 看看它的用法

首先引入pom依赖文件

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

如果您不使用@SpringBootApplication或@EnableAutoConfiguration自动配置注释,则将此依赖项添加到您的项目:

<dependency>
        <groupId>com.github.ulisesbocchio</groupId>
        <artifactId>jasypt-spring-boot</artifactId>
        <version>2.1.0</version>
</dependency>

在application.properties或者application.yml文件中配置加密密码

jasypt.encryptor.password=tiankonglanlande

获取加密内容例如:我想加密的内容是username和pwd

编写一个测试类注入StringEncryptor加密器

public class JasyptSimpleApplicationTests {

	@Autowired
	private StringEncryptor stringEncryptor;

	@Test
	public void jiami() {
		String username="tiankonglanlande";
		String pwd="tiankonglanlande_pwd";
		
		System.out.println("username原始值:"+username);
		System.out.println("pwd加密串原始值:"+pwd);
		
		System.out.println("username加密串:"+stringEncryptor.encrypt(username));
		System.out.println("pwd加密串:"+stringEncryptor.encrypt(pwd));
	}
}

运行jiami方法控制台输出加密的内容如下

username加密串:uF42uO9PxXDQYtnYe5++ebszGCkWXdY1NynJ+5Lptsg=
pwd加密串:+v5XN2Tv+d6VDfpeapME+S6vw2nOfE9L/1sjh6UFzso=
username原始值:tiankonglanlande
pwd原始值:tiankonglanlande_pwd

将加密串填写到application配置文件

u.username=ENC(uF42uO9PxXDQYtnYe5++ebszGCkWXdY1NynJ+5Lptsg=)
u.pwd=ENC(+v5XN2Tv+d6VDfpeapME+S6vw2nOfE9L/1sjh6UFzso=)

在JasyptSimpleApplicationTests测试类中编写测试方法验证是否获取到解密串

public class JasyptSimpleApplicationTests {
   @Value("${u.username}")
	private String username;
	@Value("${u.pwd}")
	private String pwd;

	@Test
	public void jiemi(){
		System.out.println("username解密后:"+username);
		System.out.println("pwd解密后:"+pwd);
	}
}

运行测试方法jiemi控制台输出

username解密后:tiankonglanlande
pwd解密后:tiankonglanlande_pwd

可以看出正好是我们加密之前的值。 是不是很简单呢感谢开源大神给我们提供的jasypt开源项目使我们的配置文件内容加密变得这么简单

但是我们的项目可能需要动态的传入密码而不是写死在配置文件里面,如果写死在配置文件里面就像将们上了锁然后又把钥匙交给了小偷一样。毫无意义!

下一篇我将介绍如何自定义一个stater将jasypt封装为一个stater供多个项目使用,同时运行时动态传入加密密码

源码下载链接

原文链接: http://www.lskyf.com/view/27

参考文档

作者:天空蓝蓝的,版权所有,欢迎保留原文链接进行转载:)


全部评论: 0

    我有话说:

    SpringBoot系列9-使用jasypt自定义stater运行时动态传入加密密码

    文章目录 1.新建springboot-encryption-configuration项目实现stater 2.pom文件引入jasypt 3.在resources/support/下配置

    SpringBoot系列16-Spring boot2x快速整合swagger2(Open Api3注解

    前言:为什么要使用swagger 传统的web开发,前端和后端的HTTP接口文档交互都是使用word文档记录,存在不仅限于这些问题;不能时时更新,不易于传输etc. swagger2可以使用配置文件

    SpringBoot系列19-防止重复请求,重复表单提交超级简单注解的实现之四(终极II)

    前言: 根据最新spring boot:2.5.0版本和在《SpringBoot防止重复请求,重复表单提交超级简单的注解实现之四(终极I)》之上化繁为简抽取更实用的代码,新增超时机制 防重复提交

    Spring Boot系列1-helloword

      使用springboot简单轻松创建helloword SpringBoot系列1-helloword 关于springboot这是摘自官方的一段话 Spring Boot

    spring boot面试题及答案持续更新中

    2019-07-28最新整理的spring boot面试题及答案 1.Spring Boot是什么 这是摘自官方的一段话 Spring Boot is designed to get you up

    ...jar中没有主清单属性, spring boot或者spring cloud的maven项目 java -jar test.jar 方式启动报错:...jar中没有主清单属性

    1.spring boot或者spring cloud的maven项目老是遇到问题...jar中没有主清单属性 2.解决方法:在pom.xml中添加如下代码 <build> <

    Spring Boot系列6-SpringBoot中使用servlet

    介绍在SpringBoot中如何使用servlet pom.xml <dependency> <groupId>org.springframework.boot<

    SpringBoot系列14-加载yml,properties配置文件信息

    yml前置知识 yml语法: 单个key value 写法 k:空格v eg: color: blue 对象写法 k: {k1: v1,k2: v2} k: k1: v1 k2: v2 list集合写法 k: [v1,v2,v3] k: -...

    Spring Boot应用或SpringCloud程序设置端口号的几种方式

    前言:springboot项目的每个应用都需要设置端口号,如何设置端口号呢?主要有以下这几种方式 1.通过配置文件设置: (1)在/src/main/resources/路径下的

    SpringBoot系列17-统一异常处理(包含简单的JSR303参数校验)

    原文链接:https://www.lskyf.com/post/211 方法1.通过ControllerAdvice实现+简单的JSR303参数校验实现 1.1 加入依赖 <

    SpringBoot系列10-文件上传

    文章目录 1.先来最简单的 2.设置文件大小,请求大小 3.多文件上传 怎样使用简单的方式上传文件,如何上传多个文件呢 先来最简单的 pom.xml文件引入依赖文件 <

    SpringBoot系列12-redis-pipeline keys模糊查询替代方案

    keys模糊查询遇到性能问题redis cup 99%以及解决方案 之前写过一篇文章 《java redis通过key模糊删除,批量删除,批量查询相关数据》,在项目中我也是这样使用的。刚开始还没有

    SpringBoot系列15-mysql-multiple-data-sources1

    springboot 多数据源的一个简单示例 多数据源分包加载 新建数据库test1和表tbl_user CREATE TABLE `tbl_user` ( `id` int(11) NOT

    加入公众号
    加入公众号