1. 程式人生 > 程式設計 >Springboot配置檔案內容加密程式碼例項

Springboot配置檔案內容加密程式碼例項

這篇文章主要介紹了Springboot配置檔案內容加密程式碼例項,文中通過示例程式碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下

使用的是jasypt-spring-boot-starter,具體介紹可以參考 https://gitee.com/yangziyi2017/Jasypt-Spring-Boot

引入依賴

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

建立加密工具類

需要建立一個工具類,用於對明文進行加密,獲取密文,然後把密文寫入到application.yml這樣的配置檔案中

package com.hikvision.seclab.common.util.encrypt;
import org.jasypt.encryption.pbe.StandardPBEStringEncryptor;
/**
* 使用jasypt對配置檔案進行加密的工具
* @author: 2019/11/7 16:47
* @since: 0.0.1-SNAPSHOT
* @modified By:
*/
public class JasyptTool {
  public static void main(String[] a){
    StandardPBEStringEncryptor se = new StandardPBEStringEncryptor();
    se.setPassword("xxx");
    String postgres = se.encrypt("abc123");
    System.out.println(postgres);
  }
}

其中有一個設定密碼的動作,是設定加密使用的salt,時jasypt元件必選的配置,有些文章中在配置檔案中使用jasypt.encryptor.password設定,這樣不安全,別人拿到salt,使用jasypt可以直接解密配置檔案中的密文。

修改配置檔案

獲取密文後,修改配置檔案

spring.datasource.driver-class-name=org.postgresql.Driver
spring.datasource.url=jdbc:postgresql:
spring.datasource.username=pg_name
spring.datasource.password=ENC(t78dKQb1viAT2QKDxxeerdaNm6wyDCJ)
spring.datasource.initialization-mode=always

設定jasypt.encryptor.password

開發環境

可以通過配置jvm啟動引數來指定jasypt.encryptor.password的值

生產環境

可以在啟動時,設定在啟動引數中
java -Dfile.encoding=UTF8 -Djasypt.encryptor.password=e9fbdb2d3b21 -jar -Xmx512m xxxDemo.jar

在docker容器中密文的密碼可以設定成環境變數(如:JASYPT_PASSWORD ),上述命令可以修改為:
java -Dfile.encoding=UTF8 -Djasypt.encryptor.password=${JASYPT_PASSWORD} -jar -Xmx512m settlement.jar

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。