SpringBoot使用jasypt加解密密码的实现方法

jasypt是一个通用的加解密库,我们可以使用它在配置文件中对数据库密码进行加密,以确保其安全性。

1、注入依赖

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

2、配置文件

#以数据库密码加密为例
## 数据源配置
spring.datasource.url=jdbc:mysql://lochost:3306/jasypt?characterEncoding=utf8
spring.datasource.username=root
#Fddt+VfcW5+j5lAbuOXxPB3mGb0iBLLe 是采用jasypt进行加密以后生成的密文
spring.datasource.password=ENC(Fddt+VfcW5+j5lAbuOXxPB3mGb0iBLLe)
spring.datasource.driver-class-name=com.mysql.jdbc.Driver

#jasypt加密的密匙
jasypt.encryptor.password=abcderf(这个是自己设置的)

那么如何得到这个密文呢?

1、win+r cmd打开命令窗口 在你的maven库中找到 jasypt-1.9.2.jar 包
执行下面的命令

java -cp D:\Maven\repository\org\jasypt\jasypt\1.9.2\jasypt-1.9.2.jar org.jasypt.intf.cli.JasyptPBEStringEncryptionCLI input="密钥(abcderf)" password=root(加密的密码) algorithm=PBEWithMD5AndDES

然后复制密文即可

2、代码生成(这种方法没有使用过 参考链接:https://www.jb51.net/article/197600.htm)

import org.jasypt.util.text.BasicTextEncryptor;

public class Test {
	public static void main(String[] args) {

  BasicTextEncryptor textEncryptor = new BasicTextEncryptor();
  //加密所需的salt(盐)
  textEncryptor.setPassword("PBEWithMD5AndDES");
  //要加密的数据(数据库的用户名或密码)
  String username = textEncryptor.encrypt("root");
  String password = textEncryptor.encrypt("root");
  System.out.println("username:"+username);
  System.out.println("password:"+password);
 }
}

到此这篇关于SpringBoot使用jasypt加解密密码的实现方法的文章就介绍到这了,更多相关SpringBoot加解密密码内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • SpringMvc/SpringBoot HTTP通信加解密的实现

    前言 从去年10月份到现在忙的没时间写博客了,今天就甩给大家一个干货吧!!! 近来很多人问到下面的问题 我们不想在每个Controller方法收到字符串报文后再调用一次解密,虽然可以完成,但是很low,且如果想不再使用加解密,修改起来很是麻烦. 我们想在使用Rest工具或swagger请求的时候不进行加解密,而在app调用的时候处理加解密,这可如何操作. 针对以上的问题,下面直接给出解决方案: 实现思路 APP调用API的时候,如果需要加解密的接口,需要在httpHeader中给出加密方式,如h

  • SpringBoot实现接口数据的加解密功能

    一.加密方案介绍 对接口的加密解密操作主要有下面两种方式: 自定义消息转换器 优势:仅需实现接口,配置简单. 劣势:仅能对同一类型的MediaType进行加解密操作,不灵活. 使用spring提供的接口RequestBodyAdvice和ResponseBodyAdvice 优势:可以按照请求的Referrer.Header或url进行判断,按照特定需要进行加密解密. 比如在一个项目升级的时候,新开发功能的接口需要加解密,老功能模块走之前的逻辑不加密,这时候就只能选择上面的第二种方式了,下面主要

  • SpringBoot使用jasypt加解密密码的实现方法(二)

    在我们的服务中不可避免的需要使用到一些秘钥(数据库.redis等) 开发和测试环境还好,但生产如果采用明文配置讲会有安全问题,jasypt是一个通用的加解密库,我们可以使用它. <dependency> <groupId>com.github.ulisesbocchio</groupId> <artifactId>jasypt-spring-boot-starter</artifactId> <version>2.1.1</ve

  • SpringBoot使用jasypt加解密密码的实现方法

    jasypt是一个通用的加解密库,我们可以使用它在配置文件中对数据库密码进行加密,以确保其安全性. 1.注入依赖 <dependency> <groupId>com.github.ulisesbocchio</groupId> <artifactId>jasypt-spring-boot-starter</artifactId> <version>2.1.1</version> </dependency> 2.

  • SpringBoot项目使用jasypt加解密的方法

    目录 一.添加依赖 二.生成加密数据 三.对加密数据进行解密 四.在SpringBoot项目中使用 Jasypt 是一个 Java 库,它允许开发者以最小的努力为他 / 她的项目添加基本的加密功能,而且不需要对密码学的工作原理有深刻的了解. 地址:https://github.com/jasypt/jasypt 一.添加依赖 <dependency> <groupId>com.github.ulisesbocchio</groupId> <artifactId&g

  • SpringBoot接口数据加解密实战记录

    这日,刚撸完2行代码,正准备掏出手机摸鱼放松放松,只见老大朝我走过来,并露出一个”善意“的微笑,兴伟呀,xx项目有于安全问题,需要对接口整体进行加密处理,你这方面比较有经验,就给你安排上了哈,看这周内提测行不...,额,摸摸头上飘摇着而稀疏的长发,感觉我爱了. 和产品.前端同学对外需求后,梳理了相关技术方案, 主要的需求点如下: 尽量少改动,不影响之前的业务逻辑: 考虑到时间紧迫性,可采用对称性加密方式,服务需要对接安卓.IOS.H5三端,另外考虑到H5端存储密钥安全性相对来说会低一些,故分针对

  • Springboot Druid 自定义加密数据库密码的几种方案

    前言 开发过程中,配置的数据库密码通常是明文形式,这样首先第一个安全性不好(相对来说),不符合一个开发规范(如项目中不能出现明文账号密码),其实就是当出现特殊需求时,比如要对非运维人员开方服务器部分权限,但是又涉及项目部署的目录时,容易泄漏数据库密码,虽然一般生产环境中,数据库往往放入内网,访问只能通过内网访问,但是不管怎么说账号密码直接让人知道总归不好,甚至有些项目需要部署到客户环境中,但是可能共用一个公共数据库(数据库只向指定服务器开放外网端口或组建内网环境),这样的情况下,如果数据库密码再

  • JAVA 实现磁盘文件加解密操作的示例代码

    简单实现了下: import javax.crypto.BadPaddingException; import javax.crypto.Cipher; import javax.crypto.KeyGenerator; import javax.crypto.SecretKey; import java.io.*; import java.security.GeneralSecurityException; import java.security.SecureRandom; /** * 文件

  • 利用python实现凯撒密码加解密功能

    凯撒密码介绍 凯撒密码是一种非常古老的加密方法,相传当年凯撒大地行军打仗时为了保证自己的命令不被敌军知道,就使用这种特殊的方法进行通信,以确保信息传递的安全.他的原理很简单,说到底就是字母于字母之间的替换. 实验目的 应用Python程序设计语言的相关知识,理解并实现凯撒密码加解密过程. 实验内容 任务1:运行import this, 观察代码运行结果:查看this.py源文件(可以在Python安装目录下的Lib文件夹下找到),分析它的原理. 任务2:实现凯撒密码加解密过程. 实验环境 Pyt

  • Python实现密钥密码(加解密)实例详解

    密钥密码 ''' 如密钥短语密码为: university -> universty 明文: abcdefghijklmnopqrstuvwxyz 密文:jklmopqwxzuniverstyabcdfgh ''' 构造映射字典 # 构造映射 asc ---> crypt def dic(x): list_x =[] list_z = [] for i in x: list_x.append(ord(i)) for i in range(97,123): if i not in list_x:

随机推荐