application.properties資料庫敏感資訊加密這麼簡單?
阿新 • • 發佈:2018-12-01
寫在前面
俗話說:”顧客是上帝“,身為程式設計師的我有時會直接對接客戶方提出的需求,畢竟我處在提供服務的一方,所以我也會盡量的滿足臨時的要求。前些天就有了一個滿足漏洞檢測的需求,想要把資料庫的明文敏感資訊加密,其實也就是密碼加密,所以也就有了這篇文章,我的專案是springboot結構,修改其實也挺簡單,廢話少說,上程式碼。
這裡使用的是 jasypt,而它是一個java實現的安全框架
1.Maven的pom.xml依賴
<dependency> <groupId>com.github.ulisesbocchio</groupId> <artifactId>jasypt-spring-boot-starter</artifactId> <version>1.8</version> </dependency>
2.通過測試類驗證加密加密
測試類如下
import org.jasypt.encryption.pbe.StandardPBEStringEncryptor; import org.jasypt.encryption.pbe.config.EnvironmentPBEConfig; /** * Created By charmsongo 21:04 2018/11/30 */ public class CryptorTest { /** * 加密方法 * @param plainText 需加密文字 */ public static void testEncrypt(String plainText) { StandardPBEStringEncryptor standardPBEStringEncryptor = new StandardPBEStringEncryptor(); EnvironmentPBEConfig config = new EnvironmentPBEConfig(); // 加密的演算法,這個演算法是預設的 config.setAlgorithm("PBEWithMD5AndDES"); //加密的金鑰,自定義 config.setPassword("CSEbfYkitulv73I2p0mXI50JMXoaxZTKJ7"); standardPBEStringEncryptor.setConfig(config); String encryptedText = standardPBEStringEncryptor.encrypt(plainText); System.out.println(encryptedText); } /** * 解密方法 * @param encryptedText 需解密文字 */ public static void testDecrypt(String encryptedText) { StandardPBEStringEncryptor standardPBEStringEncryptor = new StandardPBEStringEncryptor(); EnvironmentPBEConfig config = new EnvironmentPBEConfig(); // 解密的演算法,需同加密演算法相同 config.setAlgorithm("PBEWithMD5AndDES"); //解密的金鑰,需同加密金鑰相同 config.setPassword("CSEbfYkitulv73I2p0mXI50JMXoaxZTKJ7"); standardPBEStringEncryptor.setConfig(config); String plainText = standardPBEStringEncryptor.decrypt(encryptedText); System.out.println(plainText); } public static void main(String[] args){ testEncrypt("root"); testDecrypt("TU1NovjRHGyjp7cSc6v0sQ=="); } }
執行main方法結果如下
TU1NovjRHGyjp7cSc6v0sQ==
root
3.application.properties中配置修改
##mysql-----修改前配置 spring.datasource.url=jdbc:mysql://192.168.2.105/mysql?characterEncoding=utf8&useSSL=true spring.datasource.username=root spring.datasource.password=root spring.datasource.driver-class-name=com.mysql.jdbc.Driver ##mysql-----修後前配置 jasypt.encryptor.password=CSEbfYkitulv73I2p0mXI50JMXoaxZTKJ7#引入金鑰 spring.datasource.url=jdbc:mysql://192.168.2.105/mysql?characterEncoding=utf8&useSSL=true spring.datasource.username=root spring.datasource.password=ENC(TU1NovjRHGyjp7cSc6v0sQ==) spring.datasource.driver-class-name=com.mysql.jdbc.Driver
使用 jasypt 加密資料庫敏感資訊的任務現在就可以交工了,但是看完您會發現,這樣也不是特別安全的,確實。。。所以您有什麼更好的加密方法歡迎留言