python 配置文件中密码不能是明文_配置文件中明文密码改为密文密码的方法
我們用java鏈接數據庫,不管是web項目還是小程序,都需要把數據庫密碼寫在配置文件中(當然你要寫死在程序里也沒有辦法),或者數據庫中,通常源代碼漏洞掃描都會告訴你不能有明文密碼,那么有什么辦法可以變為密文呢?
一、思路如下
寫一個非對稱加密的工具類,用私鑰加密明文,然后把公鑰和得到的密文放在配置文件中,代碼中讀取密碼的時候就把公鑰和密文讀取進來解密后給程序用。
很簡單吧!
二、一個實現
這里就舉一個實現的例子,直接借用druid提供的工具類來,畢竟我現在的項目數據庫連接池都是用阿里的Druid.
1、在pom.xml加入如下依賴
com.alibaba
druid-spring-boot-starter
1.1.9
當然可能老項目的話沒有用maven就直接添加如下jar即可;
druid-1.1.9.jar
2、寫一個如下工具類/**
* druid數據庫連接池中的密碼進行非對稱加密,使用方式
* 1、在cmd中執行:java -cp druid-1.1.9.jar com.alibaba.druid.filter.config.ConfigTools 要加密的串
* 2、獲取公鑰和加密串放到配置文件中(cmd獲取方法右鍵標記,左鍵選取,按enter就復制到粘貼板了)
* 3、使用的時候,獲取公鑰和加密串后調用下面的decrypt方法進行解密
* @author lwh
*
*/
publicclassDruidEncryptDecrypt{
publicstaticStringdecrypt(StringpublicKey,StringencryptPassword){
try{
returnConfigTools.decrypt(publicKey,encryptPassword);
}catch(Exceptione){
// TODO Auto-generated catch block
e.printStackTrace();
}
return"";
}
}
當然,你也可以直接使用ConfigTools就可以了,不過我這個方便寫秘鑰生成步驟,你也可以直接用默認的秘鑰但是不建議。
2、按工具類中的步驟生成公鑰和KEY,如下圖所示
獲取到publicKey和passwd替換配置文件中的明文密碼.
3、修改以前的數據庫連接信息讀取類,對密碼調用DruidEncryptDecrypt進行解密,如下所示:publicStringgetPassword(){
//這里直接返回解密數據
returnDruidEncryptDecrypt.decrypt(publicKey,password);
}
這一步驟可能有人會問了,我在哪里加這個代碼,我用spring都是直接在application.xml中加上去的,調用不了java代碼啊?
親,這里有兩種辦法解決
辦法1、如果你是springboot項目,那么你可以百度下springboot整合druid密碼加密,那里有集成的,這個不多說。
辦法2、你看application.xml中其實就是一個dataSource的bean,你直接抽取出來寫成一個配置類即可,可以參考如下我的博文:
當然,辦法二是很通用的,所以我這里一般選擇辦法2.
搞定~
感想:要是被別人知道了配置文件也就是知道了密文和公鑰,那也是很容易知道真實密碼的,所以這個其實在我認為是自欺欺人罷了,還不如把公鑰或者明文密碼在程序啟動的時候參數輸入。
總結
以上是生活随笔為你收集整理的python 配置文件中密码不能是明文_配置文件中明文密码改为密文密码的方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 咪咕音乐如何取消
- 下一篇: 龙之国物语如何种植(龙是否真的存在过)