php 配置文件加密工具类,SpringBoot集成Jasypt安全框架以及配置文件内容加密(代码示例)...

本篇文章给大家带来的内容是关于SpringBoot集成Jasypt安全框架以及配置文件内容加密(代码示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

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

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

一:在pom.xml中引入jar包

com.github.ulisesbocchio

jasypt-spring-boot-starter

2.0.0

二: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==)