• 技术文章 >Java >java教程

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

    不言不言2019-02-19 15:56:53转载3530
    本篇文章给大家带来的内容是关于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安全框架以及配置文件内容加密(代码示例)的详细内容,更多请关注php中文网其它相关文章!

    声明:本文转载于:博客园,如有侵犯,请联系admin@php.cn删除
    专题推荐:SpringBoot
    上一篇:Java中CountDownLatch、CyclicBarrier和Semaphore三个辅助类的用法介绍 下一篇:Java中SimpleDateFormat的用法介绍(代码示例)
    大前端线上培训班

    相关文章推荐

    • SpringBoot配置redis和分布式session-redis的方法(代码)• springboot下多线程开发时需要注意的地方有哪些?(总结)• SpringBoot中集成邮件服务的详细讲解(附代码)• springboot采用多数据源对JdbcTemplate进行配置的方法

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网