druid加密数据库密码
序言:在日常工作中,经常使用数据库明文密码放在配置文件中,java打的包很容易就会被例如360的一些压缩软件解析出来,导致数据库泄露。在此情况下选择使用druid自带的加密机制来对明文密码进行加密处理1.引入druid<!--alibabadruid --><dependency><groupId>com.alibaba</groupId><a
·
序言:
在日常工作中,经常使用数据库明文密码放在配置文件中,java打的包很容易就会被例如360的一些压缩软件解析出来,导致数据库泄露。在此情况下选择使用druid自带的加密机制来对明文密码进行加密处理
1. 引入druid
<!-- alibaba druid -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.9</version>
</dependency>
2. 密码加密工具
可以使用cmd进行操作,这里不做详细介绍
注意了,这里的公钥是解密,私钥是加密,和rsa加密相反
import com.alibaba.druid.filter.config.ConfigTools;
/**
* 德鲁伊数据连接池数据库密码加密工具
*
* @author king
* @date 2022-03-08
*/
public class DruidUtil {
private static String PUBLIC_KEY = "";
private static String PRIVATE_KEY = "";
public static void main(String[] args) throws Exception {
// 密码明文
String password = "123456";
System.out.println("password " + password);
String [] keyPair = ConfigTools.genKeyPair(512);
// 私钥
PRIVATE_KEY = keyPair[0];
// 公钥
PUBLIC_KEY = keyPair[1];
// 用私钥加密后的密文
password = ConfigTools.encrypt(PRIVATE_KEY, password);
System.out.println("privateKey:" + PRIVATE_KEY);
System.out.println("publicKey:" + PUBLIC_KEY);
// 密文
System.out.println("ciphertext:" + password);
String decryptPassword = ConfigTools.decrypt(PUBLIC_KEY, password);
// 原密码
System.out.println("originalPassword" + decryptPassword);
}
}
运行后的到的就是我们需要的公钥,私钥,密文
3. 配置文件
配置文件中不需要显示公钥,由${cloud.config.key}代替
在大部分博客以及度娘里,都把publicKey直接放在这里,这和皇帝的新衣有什么区别
#整体配置
cloud:
config:
url: jdbc:mysql://127.0.0.1:3306/work?useUnicode=true&characterEncoding=utf-8&useSSL=false&allowMultiQueries=true&serverTimezone=UTC
password: RpVa40F4UTcL5E3xPA8dOguuOJxb5LdvEFlj1nsOfkD7KNiwT9BTpHFUcAI7J1iw==
spring:
application:
name: server-stare
datasource:
type: com.alibaba.druid.pool.DruidDataSource
druid:
url: ${cloud.config.url}
username: root
password: ${cloud.config.password}
#这里配置的是sql可合并、执行允许最大延时、可加密、加密key
connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000;config.decrypt=true;config.decrypt.key=${cloud.config.key} #加密
配置启动项
这里用的是idea
// 你自己的公钥
--cloud.config.key=MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAJE1uhesdQeAryXchQlZaMCb+jucaoSTFgY/UaWIdY9mRrn6hdahUL1NPSJjyTK5dv5ZUqjGe8+0CAwEAAQ==
将公钥放在启动项的program arguments里就可以啦
打包后启动
java -jar startApplication.0.0.1.jar --cloud.config.key='你的公钥'
看到这里是不是就熟悉了,和你使用的 --server.port=8080是不是一毛一样
最后
tomcat这里没研究,不做赘述。
在你写脚本文件启动项目的时候,不要在包旁直接放置脚本好吗
更多推荐
已为社区贡献4条内容
所有评论(0)