目录

  • 1. 简介
  • 2. 引入依赖
  • 3. 自定义加解密的方式
  • 4. 获取密文
  • 5. 编写配置文件
  • 6. 验证结果

1. 简介

在项目开发的过程中,经常会需要在配置文件中存储一些敏感的信息,如数据库的账号密码,支付相关信息,密钥等等,这些信息在开发的过程中一般是以明文的方式存储在配置文件中。这种方式的存储会存在非常大的安全隐患。jasypt能够很好的解决这一类的问题,特此记录,一遍后面学习使用。

2. 引入依赖

<!--springboot整合jasypt--><dependency><groupId>com.github.ulisesbocchio</groupId><artifactId>jasypt-spring-boot-starter</artifactId><version>3.0.3</version></dependency>

3. 自定义加解密的方式

/**
* @description:
* @author: WangYX
* @create: 2022-03-09 16:00
* @Version: 1.0.0
**/
@Configuration
@Component("desencrypt")
public class DefaultEncryptor implements StringEncryptor {@Value("${jasypt.encryptor.password}")private int password;/*** 加密方法** @param s* @return*/@Overridepublic String encrypt(String s) {return s;}/*** 解密方法** @param s* @return*/@Overridepublic String decrypt(String s) {/*** 凯撒解密*/String decrypt = CaesarCipher.decrypt(s, password);return decrypt;}
}

这里说一下,这里只是重写了解密的方法,加密的方法并没有写。原因是在使用的过程中只使用了解密的功能。密文是在事先准备好的直接存放在配置文件中。
这里使用的加密方式是凯撒加密。凯撒加密的方式可以看这里 :凯撒加密

而且这里的自定义的加解密方式是完全可以不写的,jasypt中本身就提供了加解密的方法,我们完全可以忽略这块。但是自定义加解密方式可以提供安全性,即是别人拿到我们的密文,在不知道解密方法的情况下也是无用的。

4. 获取密文

    public static void main(String[] args) {String account = "root";String password = "123456";String newAccount = CaesarCipher.encrypt(account, 123);String newPassword = CaesarCipher.encrypt(password, 123)System.out.println(newAccount);System.out.println(newPassword);}

这里是事先准备密文的方法,把数据库的账号密码直接使用凯撒密码加密。

5. 编写配置文件

spring.datasource.url=jdbc:mysql://localhost:3306/operate_log
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.username=ENC(1..3)
spring.datasource.password=ENC(NOPQRS)jasypt.encryptor.password=123
jasypt.encryptor.bean=desencrypt

在配置文件中的数据库的账号密码均使用了jasypt的方式进行加解密。

spring.datasource.username=ENC(1..3)
spring.datasource.password=ENC(NOPQRS)

jasypt中密文需要放置在ENC()中。这里的ENC()前后缀可以自定义进行配置(这里暂时不进行叙述)。

jasypt.encryptor.password=123
jasypt.encryptor.bean=desencrypt

jasypt.encryptor.password属性指明了凯撒密码的位移量。在自定义的加密类中使用。

jasypt.encryptor.bean=desencrypt该属性指明了jasypt中使用的加解密类。

6. 验证结果

项目在开始运行之后,在读取配置文件时ENC()中的数据,会自动使用jasypt中的加解密文件进行解密替换。

成功运行。

【springboot中jasypt-spring-boot-starter的使用】相关推荐

  1. 手把手教你定制标准 Spring Boot starter

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 写在前面 我们每次构建一个 Spring 应用程序时,我 ...

  2. 一个简易上手的短信服务Spring Boot Starter,连傻瓜都会!

    作 者:jackieonway 来 源:jianshu.com/u/36510c75d37c 短信服务在用户注册.登录.找回密码等相关操作中,可以让用户使用更加便捷,越来越多的公司都采用短信验证的方式 ...

  3. 自定义 Spring Boot Starter

    一.引言 什么是Spring Boot Starter呢?我们直接来看看官网是怎么介绍的吧. Starters are a set of convenient dependency descripto ...

  4. Spring boot starter

    1:Spring boot starter及项目中的类似运用 1:Spring boot starter的两种方式 引入pom文件,自动管理jar版本 根据spring.factories配置文件,加 ...

  5. 《SpringCloud超级入门》Spring Boot Starter的介绍及使用《七》

    目录 Spring Boot Starter项目创建 自动创建客户端 使用 Starter 使用注解开启 Starter 自动构建 使用配置开启 Starter 自动构建 配置 Starter 内容提 ...

  6. 实现一个 Spring Boot Starter 原来如此简单,读 Starter 源码也不在话下

    我是风筝,公众号「古时的风筝」,一个在程序圈混迹多年,主业 Java,另外 Python.React 也玩儿的 6 的斜杠开发者.现已转行程序员鼓励师 Spring Cloud 系列文章已经完成,可以 ...

  7. SpringBoot开发之Spring Boot入门

    SpringBoot开发之SpringBoot入门 一.Spring Boot概述 1.什么是Spring Boot 2.Spring Boot的优点 二.第一个Spring Boot应用 1.创建S ...

  8. 在SpringBoot中使用Spring Session解决分布式会话共享问题

    在SpringBoot中使用Spring Session解决分布式会话共享问题 问题描述: 每次当重启服务器时,都会导致会员平台中已登录的用户掉线.这是因为每个用户的会话信息及状态都是由session ...

  9. 一个项目有两个pom_实现一个Spring Boot Starter超简单,读 Starter 源码也不在话下...

    Spring Boot 对比 Spring MVC 最大的优点就是使用简单,约定大于配置.不会像之前用 Spring MVC 的时候,时不时被 xml 配置文件搞的晕头转向,冷不防还因为 xml 配置 ...

  10. 快速开发一个自定义 Spring Boot Starter ,希望你也会

    来源:http://t.cn/Ai9li9fC 众所周知,Spring Boot由众多Starter组成,随着版本的推移Starter家族成员也与日俱增.在传统Maven项目中通常将一些层.组件拆分为 ...

最新文章

  1. 是否可以将标志传递给Gulp以使其以不同方式运行任务?
  2. leetcode-【中等题】5. Longest Palindromic Substring
  3. windows的键盘输入重定向
  4. 3.9 神经网络解决多分类问题-机器学习笔记-斯坦福吴恩达教授
  5. git拉取分支报错:fatal:‘XXX' is not a commit and a branch ‘XXX' cannot be created from
  6. 分享我工作10年收藏的程序员技术网站
  7. 【OpenJ_Bailian - 2299 】Ultra-QuickSort (归并排序 或 离散化 + 树状数组)
  8. ftp 根据特定正则匹配文件名 下载到本地 并且上传文件到ftp java *** 最爱那水货...
  9. jquery梳理之常用选择器
  10. HDU1285 确定比赛名次【拓扑排序】
  11. python金融数据分析电子版_python 金融大数据分析 pdf
  12. iOS 监听锁屏/解锁事件
  13. 【转载】数据中心网络架构浅谈
  14. 基础知识系列博客——计算机组成原理
  15. HDU 5594(ZYB's Prime-网络流)
  16. 【程序哥】分析 网易一元夺宝是否有作弊空间,真像媒体所说的吗?
  17. Excel 自定义下拉菜单
  18. HTML编写个人日记,HTML学习日记(1-基础)
  19. iOS开发关于block和局部变量和全局变量
  20. 文本基本样式及盒模型

热门文章

  1. 统计之 - 离均差平方和
  2. 个人隐私保护5:和 金士顿 DataTraveler Locker+加密盘优势比较
  3. node之request模块
  4. 智能世界2030八大展望
  5. python中代码注释使用的符号是_Python语句中用于注释代码的符号是
  6. InstructGPT:chatGPT的姊妹模型
  7. shell脚本编程for循环求阶乘_shell脚本循环及函数
  8. GPS坐标系与实际地图坐标系
  9. C语言中的restrict限定符
  10. 微机原理——基础知识及计算机基本组成