@
寫在前面
俗話說:”顧客是上帝“,身為程序員的我有時會直接對接客戶方提出的需求,畢竟我處在提供服務的一方,所以我也會盡量的滿足臨時的要求。前些天就有了一個滿足漏洞檢測的需求,想要把數據庫的明文敏感信息加密,其實也就是密碼加密,所以也就有了這篇文章,我的項目是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 加密數據庫敏感信息的任務現在就可以交工了,但是看完您會發現,這樣也不是特別安全的,確實。。。所以您有什么更好的加密方法歡迎留言
