欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

SpringBoot實現(xiàn)配置文件加密的方案分享

 更新時間:2023年11月23日 16:15:02   作者:Rise同志  
項目的數(shù)據(jù)庫密碼、redis 密碼等明文展示在配置文件中會有潛在的風險,因此采用合適的安全防護措施是有必要的,下面小編就為大家介紹一下SpringBoot中配置文件加密的方法,希望對大家有所幫助

1.為什么要對配置文件關鍵信息進行加密

spring:
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://127.0.0.1:3306/test?useSSL=false
    username: root
    password: root
  redis:
    host: 127.0.0.1
    port: 6379
    password: 123456

項目的數(shù)據(jù)庫密碼、redis 密碼等明文展示在配置文件中會有潛在的風險,比如源碼泄露,或者配置文件暴露,會導致相關密碼泄露,造成安全風險,因此采用合適的安全防護措施是有必要的。

2.配置文件加密方案

方案1:jasypt

jasypt 是一個開源的工具類,可以方便的對 SpringBoot 配置文件中的配置項進行對稱加密

集成步驟

1.1 引入Jar包

在maven中引入如下依賴

<dependency>
    <groupId>com.github.ulisesbocchio</groupId>
    <artifactId>jasypt-spring-boot-starter</artifactId>
    <version>3.0.3</version>
</dependency>

1.2 對敏感數(shù)據(jù)生成加密字符串

有以下三種加密方式,請根據(jù)自己需求和項目情況自行選擇:

方式1: 通過加密工具類生成(以下為代碼實例,可以直接使用)

import org.jasypt.encryption.pbe.StandardPBEStringEncryptor;
import org.jasypt.encryption.pbe.config.EnvironmentStringPBEConfig;

/**
 * 使用Jasypt對配置文件進行加密
 */
public class JasyptUtil {

    /**
     * 加密算法 加密解密保證同一種算法
     * jasypt3.0后,默認支持的算法為 PBEWITHHMACSHA512ANDAES_256,這種算法安全性更高,但是需要 Java JDK 1.9+或添加JCE(Java Cryptography Extension 無限強度權限策略文件)
     * 使用PBEWithMD5AndDES算法即可
     */
    private static final String algorithm ="PBEWithMD5AndDES";
    //密鑰,對稱加密使用同一個密鑰進行加解密,密鑰自己定義,注意保管
    private static final String key ="test";

    public static void main(String[] args) {
        //加密方法示例
        String encryptInfo = encrypt("root");
        System.out.println(encryptInfo);
        //解密方法示例
        String decryptInfo = decrypt(encryptInfo);
        System.out.println(decryptInfo);
    }

    /**
     * 加密
     *
     * @param value 明文
     * @return
     */
    public static String encrypt(String value) {
        StandardPBEStringEncryptor encryptor = new StandardPBEStringEncryptor();
        EnvironmentStringPBEConfig config = new EnvironmentStringPBEConfig();
        // 指定算法
        config.setAlgorithm(algorithm);
        // 指定秘鑰
        config.setPassword(key);
        encryptor.setConfig(config);
        // 加密數(shù)據(jù)
        return encryptor.encrypt(value);
    }

    /**
     * 解密
     *
     * @param value 密文
     * @return
     */
    public static String decrypt(String value) {
        StandardPBEStringEncryptor encryptor = new StandardPBEStringEncryptor();
        EnvironmentStringPBEConfig config = new EnvironmentStringPBEConfig();
        config.setAlgorithm(algorithm);
        config.setPassword(key);
        encryptor.setConfig(config);
        // 解密數(shù)據(jù)
        return encryptor.decrypt(value);
    }
}

方式2: 執(zhí)行 jar包,通過命令行的模式獲取(不推薦,操作起來不夠方便)

java -cp ./jasypt-1.9.3.jar org.jasypt.intf.cli.JasyptPBEStringEncryptionCLI password="test" algorithm=PBEWithMD5AndDES input=root

輸出結果:

Runtime: Oracle Corporation Java HotSpot(TM) 64-Bit Server VM 25.161-b12

----ARGUMENTS-------------------

input: root
algorithm: PBEWithMD5AndDES
password: ADUMDFUOV7834*

----OUTPUT----------------------

dXTlEeOApsY5oCeCQEo4Gg==

注:

  • password:用來加密的密鑰
  • algorithm:加密算法 PBEWithMD5AndDES/PBEWITHHMACSHA512ANDAES_256。使用PBEWithMD5AndDES即可
  • input:后接的屬性為需要加密的參數(shù)
  • OUTPUT輸出的值即為加密后的值

方式三: 使用Maven插件(推薦,使用起來比較快捷)

Maven中引入jasypt插件

<plugin>
    <groupId>com.github.ulisesbocchio</groupId>
    <artifactId>jasypt-maven-plugin</artifactId>
    <version>3.0.3</version>
    <configuration>
        <path>file:src/main/resources/application.yml</path>
    </configuration>
</plugin>

注:

path標簽中的路徑請根據(jù)自己配置文件路徑配置

修改配置文件

server:
  port: 8030
spring:
  datasource:
    url: jdbc:mysql://localhost:3306/test?useSSL=false
    driver-class-name: com.mysql.jdbc.Driver
    username: DEC(root)
    password: DEC(root)
jasypt:
   encryptor:
     password: test
  • 需要加密的數(shù)據(jù)使用DEC()包起來
  • password為密鑰自定義

Maven加密命令

mvn jasypt:encrypt -Djasypt.encryptor.password=test

執(zhí)行完該命令之后,DEC中的內(nèi)容會自動被替換為ENC(加密內(nèi)容)

Maven解密命令

mvn jasypt:decrypt -Djasypt.encryptor.password=test

1.3 使用

配置文件中按下圖添加密鑰和需要加密的屬性之后,啟動時會自動對敏感數(shù)據(jù)進行解密

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/test?useSSL=false
    driver-class-name: com.mysql.jdbc.Driver
    username: ENC(加密之后的屬性)
    password: ENC(加密之后的屬性)
jasypt:
   encryptor:
     password: 自定義的密鑰

1.4 安全事項

由于該方案采用的是對稱加密,一旦泄露密鑰,相關密碼將暴露,將密鑰配置在配置文件中,非常不安全,推薦將密鑰添加到啟動命令中,降低暴露風險

java -jar demo.jar --Djasypt.encryptor.password=test

以上就是SpringBoot實現(xiàn)配置文件加密的方案分享的詳細內(nèi)容,更多關于SpringBoot配置文件加密的資料請關注腳本之家其它相關文章!

相關文章

  • 詳解Sentinel流量控制限流框架的原理與使用

    詳解Sentinel流量控制限流框架的原理與使用

    Sentinel 是一個高可用、高擴展、高穩(wěn)定性的開源流量控制和熔斷降級框架,可以在分布式系統(tǒng)中實現(xiàn)實時的流量控制,下面就來和大家聊聊是具體如何操作的吧
    2023-05-05
  • springboot 監(jiān)控管理模塊搭建的方法

    springboot 監(jiān)控管理模塊搭建的方法

    本篇文章主要介紹了springboot 監(jiān)控管理模塊搭建的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-03-03
  • 解決IDEA2020.1版本不兼容Lombok的問題

    解決IDEA2020.1版本不兼容Lombok的問題

    這篇文章主要介紹了解決IDEA2020.1版本不兼容Lombok的問題,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-04-04
  • Nett分布式分隔符解碼器邏輯源碼剖析

    Nett分布式分隔符解碼器邏輯源碼剖析

    這篇文章主要為大家介紹了Nett分布式分隔符解碼器邏輯源碼剖析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-03-03
  • Java使用fastjson對String、JSONObject、JSONArray相互轉換

    Java使用fastjson對String、JSONObject、JSONArray相互轉換

    這篇文章主要介紹了Java使用fastjson對String、JSONObject、JSONArray相互轉換,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • java服務器端微信、支付寶支付和退款功能

    java服務器端微信、支付寶支付和退款功能

    這篇文章主要為大家詳細介紹了java服務器端微信、支付寶支付和退款功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-09-09
  • Java RabbitMQ的三種Exchange模式

    Java RabbitMQ的三種Exchange模式

    這篇文章主要介紹了Java RabbitMQ的三種Exchange模式,分別為Direct模式、Fanout模式、Topic模式,Rabbit的Direct Exchange模式是指消息發(fā)送導RouteKey中指定的Queue,Direct模式可以使用Rabbit自帶的Exchange
    2022-08-08
  • java中public class與class的區(qū)別詳解

    java中public class與class的區(qū)別詳解

    以下是對java中public class與class的區(qū)別進行了分析介紹,需要的朋友可以過來參考下
    2013-07-07
  • java項目如何引入其他jar包

    java項目如何引入其他jar包

    通常在lib文件夾中存放從外部引入的jar包,所以把JAR文件復制進去。 然后修改編譯腳本,不需要去編譯tool文件夾里面的java類,直接把jar包添加到classpath,下文將詳細介紹
    2021-10-10
  • Spring MVC的文件上傳和下載以及攔截器的使用實例

    Spring MVC的文件上傳和下載以及攔截器的使用實例

    這篇文章主要介紹了Spring MVC的文件上傳和下載以及攔截器的使用實例,具有一定的參考價值,有興趣的可以了解一下
    2017-08-08

最新評論