首頁  >  文章  >  Java  >  SpringBoot整合Jasypt安全框架以及設定檔內容加密(程式碼範例)

SpringBoot整合Jasypt安全框架以及設定檔內容加密(程式碼範例)

不言
不言轉載
2019-02-19 15:56:536109瀏覽

這篇文章帶給大家的內容是關於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中文網其他相關文章!

陳述:
本文轉載於:cnblogs.com。如有侵權,請聯絡admin@php.cn刪除