专业的编程技术博客社区

网站首页 > 博客文章 正文

SpringBoot整合jasypt实现加解密(springboot参数加解密)

baijin 2024-11-13 09:31:18 博客文章 3 ℃ 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

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表