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

  我们在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

 1 package com.zhuang.common.utils;
 2 
 3 import org.jasypt.encryption.pbe.PooledPBEStringEncryptor;
 4 import org.jasypt.encryption.pbe.StandardPBEByteEncryptor;
 5 import org.jasypt.encryption.pbe.config.SimpleStringPBEConfig;
 6 
 7 /**
 8  * @Created with Intellij IDEA
 9  * @Author : payne
10  * @Date : 2018/5/18 - 10:37
11  * @Copyright (C), 2018-2018
12  * @Descripition : Jasypt安全框架加密类工具包
13  */
14 public class JasyptUtils {
15 
16     /**
17      * Jasypt生成加密结果
18      *
19      * @param password 配置文件中设定的加密密码 jasypt.encryptor.password
20      * @param value    待加密值
21      * @return
22      */
23     public static String encryptPwd(String password, String value) {
24         PooledPBEStringEncryptor encryptOr = new PooledPBEStringEncryptor();
25         encryptOr.setConfig(cryptOr(password));
26         String result = encryptOr.encrypt(value);
27         return result;
28     }
29 
30     /**
31      * 解密
32      *
33      * @param password 配置文件中设定的加密密码 jasypt.encryptor.password
34      * @param value    待解密密文
35      * @return
36      */
37     public static String decyptPwd(String password, String value) {
38         PooledPBEStringEncryptor encryptOr = new PooledPBEStringEncryptor();
39         encryptOr.setConfig(cryptOr(password));
40         String result = encryptOr.decrypt(value);
41         return result;
42     }
43 
44     public static SimpleStringPBEConfig cryptOr(String password) {
45         SimpleStringPBEConfig config = new SimpleStringPBEConfig();
46         config.setPassword(password);
47         config.setAlgorithm(StandardPBEByteEncryptor.DEFAULT_ALGORITHM);
48         config.setKeyObtentionIterations("1000");
49         config.setPoolSize("1");
50         config.setProviderName("SunJCE");
51         config.setSaltGeneratorClassName("org.jasypt.salt.RandomSaltGenerator");
52         config.setStringOutputType("base64");
53         return config;
54     }
55 
56     public static void main(String[] args) {
57         // 加密
58         System.out.println(encryptPwd("panther", "root"));
59         // 解密
60         System.out.println(decyptPwd("panther", "GfP4qfnrJeqMvzN1nOemIQ=="));
61     }
62 
63 }

四:使用方法

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

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

1 # 开发环境
2 spring:
3   datasource:
4     driver-class-name: com.mysql.jdbc.Driver
5     url: jdbc:mysql://127.0.0.1:3306/panther_dev?useUnicode=true&characterEncoding=UTF-8
6     # Jasypt加密 可到common包中找到JasyptUtil加解密工具类生成加密结果 格式为ENC(加密结果)
7     username: ENC(S2G86yhb0OMJMeNXUaGwYw==)
8     password: ENC(GfP4qfnrJeqMvzN1nOemIQ==)

posted on 2019-07-13 15:57  Luwak  阅读(349)  评论(0编辑  收藏  举报

导航