? ? ? ?在現(xiàn)在這個網(wǎng)絡發(fā)達的環(huán)境下,安全問題讓很多公司都頭疼。許多項目中的數(shù)據(jù)庫的連接配置文件都選擇了相應的加密方式去加密。
? ? ? ?今天為大家介紹Durid方法對數(shù)據(jù)庫連接信息加密以及解密。
step1:(加密)
從網(wǎng)上down一個jar包:druid-1.0.4.jar
cmd命令行執(zhí)行以下命令:
java -cp druid-1.0.4.jar com.alibaba.druid.filter.config.ConfigTools 用戶名or密碼

step2:解密
applicationContext.xml中數(shù)據(jù)庫連接的配置
<bean id="dataSource" class="com.sunyard.audit.util.DecryptDruidSource" init-method="init" destroy-method="close">
<!-- 基本屬性 url、user、password -->
<property name="driverClassName"? value="${Driver_Name}" />
<property name="url" value="${URL}" />
<property name="username" value="${UserName}" />
<property name="password" value="${Password}" />
<!-- 數(shù)據(jù)庫密碼加密,以下兩行配置必需 -->
<property name="filters" value="config" />
<property name="connectionProperties" value="config.decrypt=true" />
<!-- 以上兩行加密 -->
</bean>
step3:(config.proerties中)
jdbc_driverClassName=com.mysql.jdbc.Driver
jdbc_url=jdbc:mysql://*.*.*.*:3306/lube_dev?connectTimeout=1000&socketTimeout=12000&useUnicode=true&characterEncoding=utf-8
jdbc_username=加密后的用戶名
jdbc_password=加密后的密碼
step4:(繼承方法):阿里這邊默認是對密碼解密的,所以這邊只需要對用戶名解密,如果url加密,以此類推
/**
* 用來解密配置中的密文(重點配置,在這里擴展用戶名的解密)
* setUsername(name) 方法對應xml中的一個property屬性,password默認加密不需要重寫,
* 還可以加密url 重寫setUrl(url)
*/
@SuppressWarnings("all")
public class DecryptDruidSource extends DruidDataSource{
@Override
public void setUsername(String username) {
try {
username = ConfigTools.decrypt(username);
} catch (Exception e) {
e.printStackTrace();
}
super.setUsername(username);
}
}
ps:如果你將上面的封裝起來,可以用下面的方法直接調(diào)用
項目中應用到username和password的時候需要解密
Properties prop = new Properties();
prop.load(AuditInitServlet.class.getClassLoader().getResourceAsStream("config.properties"));
UserName=ConfigTools.decrypt(prop.getProperty("UserName"));
Password=ConfigTools.decrypt(prop.getProperty("Password"));