SpringBoot集成Mybatis如何加密密碼?

2024年2月6日 17点热度 0人点赞

上一個文章有老鐵問道,明文的安全性問題,我單獨拿出來說一下吧,

一、第一種方式

首先生成密文和解密公鑰

找到這個類: com.alibaba.druid.filter.config.ConfigTools

然後執行

點擊run main方法

在彈出的窗口輸入你的數據庫密碼如下圖

控制臺會輸出 私鑰,公鑰,以及加密後的密碼。

加密密碼和公鑰

然後修改配置文件,
application-dev.properties 開發環境


spring.datasource.druid.url=jdbc:mysql://localhost/blog
spring.datasource.druid.username=用戶名
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.password=加密後的密鑰 對應執行後的password
# 生成的公鑰
public-key=公鑰 對應執行後的 publicKey
# 配置 connection-properties,啟用加密,配置公鑰。
spring.datasource.druid.connection-properties=config.decrypt=true;config.decrypt.key=${public-key}
# 啟用ConfigFilter
spring.datasource.druid.filter.config.enabled=true

重新啟動,就完成了。

二、第二種方法,使用druid的回調方法

看下配置文件

密碼位置隨便填,不填也行,但是必須要有這個字段可以空這

重點看
spring.datasource.druid.password-callback-class-name 這個屬性,他配置的是一個類的全路徑。

spring.datasource.druid.url=jdbc:mysql://localhost/blog
spring.datasource.druid.username=用戶名
spring.datasource.druid.password=密碼,隨意,也可以自己自定義
#spring.datasource.druid.connect-properties.password=aaa
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.druid.password-callback-class-name=net.img.config.DBConfig

看下DBConfig怎麼實現

在你的密碼那個位置配置上你的真實密碼即可,至於密碼從哪來,是解密出來的,還是從遠端取過來的,都可以。

package net.img.config;
import com.alibaba.druid.util.DruidPasswordCallback;
import java.util.Properties;
public class DBConfig extends DruidPasswordCallback {
    @Override
    public void setProperties(Properties properties) {
        super.setProperties(properties);
        setPassword("你的密碼".toCharArray());
    }
}

然後啟動,也能完成配置