欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

SpringBoot集成Jasypt安全框架,配置文件内容加密

程序员文章站 2022-06-28 11:16:59
转载于(https://zhiku8.com/springboot-jasypt.html) 我们在SpringBoot项目中的yml或者properties配置文件中都是明文的,相对而言安全性就低了很多。都知道配置文件中的都是一些数据库连接用户名密码啊、一些第三方密钥等信息。所以我们谨慎点,使用下 ......

转载于()

我们在springboot项目中的yml或者properties配置文件中都是明文的,相对而言安全性就低了很多。都知道配置文件中的都是一些数据库连接用户名密码啊、一些第三方密钥等信息。所以我们谨慎点,使用下加密吧。

这里面使用的是jasypt的安全框架。

一:在pom.xml中引入jar包

<!-- jasypt加密 -->
<dependency>
    <groupid>com.github.ulisesbocchio</groupid>
    <artifactid>jasypt-spring-boot-starter</artifactid>
    <version>2.0.0</version>
</dependency>

二:yml配置文件中引入我们的passwodk,也就是所谓的key

# 配置文件加密key
jasypt:
  encryptor:
    password: panther

 三:创建我们一个工具包

代码示例:jasyptutils.java

package com.zhuang.common.utils;

import org.jasypt.encryption.pbe.pooledpbestringencryptor;
import org.jasypt.encryption.pbe.standardpbebyteencryptor;
import org.jasypt.encryption.pbe.config.simplestringpbeconfig;

/**
 * @created with intellij idea
 * @author : payne
 * @date : 2018/5/18 - 10:37
 * @copyright (c), 2018-2018
 * @descripition : jasypt安全框架加密类工具包
 */
public class jasyptutils {

    /**
     * jasypt生成加密结果
     *
     * @param password 配置文件中设定的加密密码 jasypt.encryptor.password
     * @param value    待加密值
     * @return
     */
    public static string encryptpwd(string password, string value) {
        pooledpbestringencryptor encryptor = new pooledpbestringencryptor();
        encryptor.setconfig(cryptor(password));
        string result = encryptor.encrypt(value);
        return result;
    }

    /**
     * 解密
     *
     * @param password 配置文件中设定的加密密码 jasypt.encryptor.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(standardpbebyteencryptor.default_algorithm);
        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) {
        // 加密
        system.out.println(encryptpwd("panther", "root"));
        // 解密
        system.out.println(decyptpwd("panther", "gfp4qfnrjeqmvzn1noemiq=="));
    }

}

四:使用方法

上面工具包种有main方法,填入你配置的key,然后填入你需要加密的value,直接运行即可。

类似配置文件中的数据库连接

# 开发环境
spring:
  datasource:
    driver-class-name: com.mysql.jdbc.driver
    url: jdbc:mysql://127.0.0.1:3306/panther_dev?useunicode=true&characterencoding=utf-8
    # jasypt加密 可到common包中找到jasyptutil加解密工具类生成加密结果 格式为enc(加密结果)
    username: enc(s2g86yhb0omjmenxuagwyw==)
    password: enc(gfp4qfnrjeqmvzn1noemiq==)