前言

密码安全是非常重要的,因此我们在代码中往往需要对密码进行加密,以此保证密码的安全

加依赖

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

加配置

# jasypt 密码加密配置
jasypt:encryptor:# 加密盐值password: jasypt# 加密算法设置 3.0.0 以后algorithm: PBEWithMD5AndDESiv-generator-classname: org.jasypt.iv.NoIvGenerator

PS:可以看到配置中特意配置了加密算法,原因是官方在 3.0.0 以后更改了加密算法,所以假如你不设置的话,使用网上的方法加密出来的密码启动就会报错,如图:

官方 issue:Failed to bind properties under ‘spring.datasource.password’ to java.lang.String` #154

版本在 3.0.0 之前的 Jasypt

需要额外添加 Jasypt 的加密盐值配置到 Tomcat

-Djasypt.encryptor.password=xxxx

工具类

如果你想手动使用 Jasypt 进行加解密

import org.jasypt.encryption.pbe.PooledPBEStringEncryptor;
import org.jasypt.encryption.pbe.config.SimpleStringPBEConfig;public class JasyptUtil {/*** Jasypt生成加密结果* @param password 配置文件中设定的加密盐值* @param value 加密值* @return*/public static String encyptPwd(String password,String value){PooledPBEStringEncryptor encryptor = new PooledPBEStringEncryptor();encryptor.setConfig(cryptor(password));String result = encryptor.encrypt(value);return result;}/*** 解密* @param password 配置文件中设定的加密盐值* @param value 解密密文* @return*/public static String decyptPwd(String password,String value){PooledPBEStringEncryptor encryptor = new PooledPBEStringEncryptor();encryptor.setConfig(cryptor(password));String result = encryptor.decrypt(value);return result;}public static SimpleStringPBEConfig cryptor(String password){SimpleStringPBEConfig config = new SimpleStringPBEConfig();config.setPassword(password);config.setAlgorithm("PBEWithMD5AndDES");config.setKeyObtentionIterations("1000");config.setPoolSize("1");config.setProviderName("SunJCE");config.setSaltGeneratorClassName("org.jasypt.salt.RandomSaltGenerator");config.setStringOutputType("base64");return config;}public static void main(String[] args) {// 加密String encPwd = encyptPwd("jasypt", "123456");// 解密String decPwd = decyptPwd("jasypt", encPwd);System.out.println(encPwd);System.out.println(decPwd);}
}

数据库配置解密

用官方提供的保留字 ENC,将加密的密码包裹即可

spring:datasource:url: jdbc:mysql://xx.xx.xx.xx/xxxx?useUnicode=true&characterEncoding=utf8&useSSL=falseusername: rootpassword: ENC(加密后的密码)driver-class-name: com.mysql.jdbc.Driver

boot数据加解密 spring_SpringBoot 集成 Jasypt 对数据库加密以及踩坑相关推荐

  1. boot数据加解密 spring_SpringBoot实现接口数据的加解密功能

    一.加密方案介绍 对接口的加密解密操作主要有下面两种方式: 自定义消息转换器 优势:仅需实现接口,配置简单. 劣势:仅能对同一类型的MediaType进行加解密操作,不灵活. 使用spring提供的接 ...

  2. boot数据加解密 spring_springboot项目使用druid对数据库密码的加解密

    作为一名有经验的开发人员,是不习惯将明文直接放在代码中,总觉得有隐患.今天搭建了一个springboot项目,需要集成数据库,调取数据. 在配置 datasource的时候,想要将密码改为密文,连接数 ...

  3. 护网必备技能:Spring Boot 接口数据加解密 功能实现

    护网必备技能:Spring Boot 接口数据加解密 功能实现 文章目录 护网必备技能:Spring Boot 接口数据加解密 功能实现 1. 尽量少改动,不影响之前的业务逻辑: 2. 考虑到时间紧迫 ...

  4. Spring Boot Post接口数据加解密

    概述 今天这篇文章聊一聊接口安全问题,涉及到接口的加密.解密. 接口数据加解密流程图 涉及客户端和服务端的整体改造,可以在接口统一加 /secret/ 前缀来区分. 代码Demo 用户类型: @Dat ...

  5. Popular MVC框架请求响应数据加解密@Decrypt和@Encrypt的使用示例

    简介 此项目用于演示popularmvc如何提供统一全自动化的API隐私数据保护,并且可以做到业务无感和灵活指定数据加解密算法. 请求数据加密使用@Decrypt注解,响应信息加密使用@Encrypt ...

  6. STM32F1做RSA,AES数据加解密,MD5信息摘要处理

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/qq_31878855/article/ ...

  7. T-SQL问题解决集锦——数据加解密

    问题一:如何为数据进行加密与解密,避免使用者窃取机密数据? 对于一些敏感数据,如密码.卡号,一般不能使用正常数值来存储.否则会有安全隐患.以往的加密解密都有前端应用程序来辅助完成.而数据库一般只能加密 ...

  8. 数据安全之MySQL数据加解密的实现方案

    在我们日常的业务需求中,经常会遇到需要对存储的用户敏感数据进行加密处理的场景,如用户的身份信息.住址.身份证号等等,本文我们就讨论下,业务系统(后端)如何实现数据存储(基于MySQL)的加解密功能. ...

  9. SpringBoot 优雅地对接口进行数据加解密

    我是 ABin-阿斌:写一生代码,创一世佳话,筑一览芳华.如果小伙伴们觉得不错就一键三连吧~ 声明: 原作者:掘金:https://juejin.cn/user/3650034336532824 原文 ...

最新文章

  1. Pyqt5 获取命令行参数sys.argv
  2. 通过制作数字桌面游戏和Web应用程序学习JavaScript
  3. http mjpeg 图像读取
  4. 关于营造团队良好氛围的讨论
  5. python属性是什么意思_什么是python类属性
  6. IE实现PDF在线预览功能
  7. ActiveMQ下载与安装,无法远程访问控制台
  8. C语言-Switch 语句
  9. 千人千面系统,这样搞比较靠谱【干货】
  10. Linux内核“问题门” - 学习问题、经验集锦
  11. 注册表使用全攻略(1)
  12. 手机开机启动慢是什么原因_手机开机慢,详细教您手机开机慢怎么办
  13. Java代码的登录界面
  14. eclipse J2EE软件下载
  15. 走近Harvest Moon:Moonbeam DeFi狂欢会
  16. c语言win32课程表,用C语言怎么编出来课程表
  17. 初学C++之——do while循环语句
  18. iClient for Leaflet解决地图放大问题
  19. 【Unity】由预制体实例获取预制体资源及预制体资源路径
  20. linux 卸载edrawmax,Ubuntu 12.10安装FreeMind(Win下亿图替代品)

热门文章

  1. R删除冗余行数据基于dplyr包
  2. 基于变分自动编码器(Variational Autoencoders)进行推荐系统的实施、Keras实现并可视化训练和验证误差、最后给出topK准确率和召回率
  3. 高德地图小蓝点_一会晴天一会下雨?夏日想要顺利出行 高德地图这些小功能最实用...
  4. 3.4.3 嵌套查询
  5. linux lvm使用情况,Linux LVM系列(一)lvm使用
  6. # 关闭 window10自带广告 microsoft star
  7. javascript 自动按按钮
  8. cudart64_100.dll not found
  9. 三十三、分治算法---汉诺塔问题
  10. 大数据分布式集群搭建(7)