SpringBoot整合jasypt实现加解密

发布一下 0 0

Java知识点整理正在进行中,关注我,持续给您带来简单,实用的Java编程技巧。

jasypt是Java中一个用来加密解密的框架。

在实际的项目开发中,程序配置文件中的有些信息实际上是比较敏感的,比如数据库的用户名和密码,直接以明文的方式写在配置文件中会有一定的风险。这时就可以通过jasypt对敏感信息进行加密,达到保护敏感信息的目的。

这里介绍下SpringBoot整合jasypt实现加解密的方法。

步骤:

  1. 引入jasypt依赖
  2. 在SpringBoot配置文件中设置jasypt的加密密钥
  3. 通过代码获得加密后的密文
  4. 将密文添加到SpringBoot配置文件中

引入jasypt依赖

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

在SpringBoot配置文件中设置jasypt的加密密钥Afei@2018

jasypt:  encryptor:    password: Afei@2018

获得密文的方法,密钥需要和配置文件里的一致

package com.bbzd.mws.util;import org.jasypt.util.text.AES256TextEncryptor;import org.jasypt.util.text.BasicTextEncryptor;import org.jasypt.util.text.StrongTextEncryptor;/** * @author Wangjzh * @date 2022/10/19 - 21:48 */public class EncryptUtil {    public static void main(String[] args) {        AES256TextEncryptor basicTextEncryptor = new AES256TextEncryptor();        //设置密钥        basicTextEncryptor.setPassword("Afei@2018");        //encryptString是加密后的密文        String encryptString=basicTextEncryptor.encrypt("root");        System.out.println("encryptString:"+encryptString);        //planString是解密后的明文        String planString=basicTextEncryptor.decrypt(encryptString);        System.out.println("planString:"+planString);    }}

密文放在ENC()中说明是密文,系统会在使用时自动转为明文

spring:  datasource:    one:      driver-class-name: com.mysql.cj.jdbc.Driver      url: jdbc:mysql://localhost:3306/706lmes?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=UTF-8&useSSL=false      username: ENC(ri1wFv4s5cXv/Ppn7VXIMKaAkjkE1TNHLuozzOU05awcw0+L8MAH2/KUv1VkVppt)      password: ENC(mQbBjZdGegOm3B8Y+9O9oVM1a0dkzoUIhHKiJcGvMdGveu9CbLiWV/g5yjeN1MqB)      type: com.alibaba.druid.pool.DruidDataSource      druid:        filter:          config:            enabled: true    two:      driver-class-name: com.mysql.cj.jdbc.Driver      url: jdbc:mysql://localhost:3306/706lmes?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=UTF-8&useSSL=false      username: ENC(ri1wFv4s5cXv/Ppn7VXIMKaAkjkE1TNHLuozzOU05awcw0+L8MAH2/KUv1VkVppt)      password: ENC(mQbBjZdGegOm3B8Y+9O9oVM1a0dkzoUIhHKiJcGvMdGveu9CbLiWV/g5yjeN1MqB)      type: com.alibaba.druid.pool.DruidDataSource      druid:        filter:          config:            enabled: true

总结:

  1. jasypt使用起来非常方便,对原来配置文件的修改就是将密文包含在ENC()内
  2. 加密密钥放在配置文件里是为了开发调试方便,在实际部署时,可以去掉SpringBoot配置文件里的密钥,通过启动参数来将密钥传递到程序中:java -jar -Djasypt.encryptor.password=Afei@2018 server-0.0.1-SNAPSHOT.jar

版权声明:内容来源于互联网和用户投稿 如有侵权请联系删除

本文地址:http://0561fc.cn/183530.html