這篇文章帶給大家的內容是關於SpringBoot整合Jasypt安全框架以及設定檔內容加密(程式碼範例),有一定的參考價值,有需要的朋友可以參考一下,希望對你有所幫助。
我們在SpringBoot專案中的yml或properties設定檔中都是明文的,相對而言安全性就低了很多。都知道設定檔中的都是一些資料庫連接使用者名稱密碼啊、一些第三方金鑰等資訊。所以我們謹慎一點,使用下加密吧。
這裡面使用的是Jasypt的安全框架。
<!-- Jasypt加密 --> <dependency> <groupId>com.github.ulisesbocchio</groupId> <artifactId>jasypt-spring-boot-starter</artifactId> <version>2.0.0</version> </dependency>
# 配置文件加密key jasypt: encryptor: password: panther
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中文網其他相關文章!