SpringBoot集成Jasypt安全框架以及配置文件内容加密的案例

发布时间:2020-10-28 11:55:49 作者:小新
来源:亿速云 阅读:235

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

感谢各位的阅读!看完上述内容,你们对SpringBoot集成Jasypt安全框架以及配置文件内容加密的案例大概了解了吗?希望文章内容对大家有所帮助。如果想了解更多相关文章内容,欢迎关注亿速云行业资讯频道。

推荐阅读:
  1. SpringBoot 2.0 开发案例之整合Shiro安全框架
  2. SpringBoot集成Shiro安全框架

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

springboot

上一篇:SpringBoot加载子模块配置文件的案例分析

下一篇:java中JDBC连接oracle数据库的方法是什么

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》