application.properties數(shù)據(jù)庫敏感信息加密這么簡單?

寫在前面

俗話說:”顧客是上帝“,身為程序員的我有時(shí)會(huì)直接對接客戶方提出的需求,畢竟我處在提供服務(wù)的一方,所以我也會(huì)盡量的滿足臨時(shí)的要求。前些天就有了一個(gè)滿足漏洞檢測的需求,想要把數(shù)據(jù)庫的明文敏感信息加密,其實(shí)也就是密碼加密,所以也就有了這篇文章,我的項(xiàng)目是springboot結(jié)構(gòu),修改其實(shí)也挺簡單,廢話少說,上代碼。

這里使用的是 jasypt,而它是一個(gè)java實(shí)現(xiàn)的安全框架

1.Maven的pom.xml依賴

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

2.通過測試類驗(yàn)證加密加密

測試類如下

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();

        // 加密的算法,這個(gè)算法是默認(rèn)的
        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==");
    }
}

運(yùn)行main方法結(jié)果如下

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 加密數(shù)據(jù)庫敏感信息的任務(wù)現(xiàn)在就可以交工了,但是看完您會(huì)發(fā)現(xiàn),這樣也不是特別安全的,確實(shí)。。。所以您有什么更好的加密方法歡迎留言

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容