常见的数据库安全加密

原创
08/10 14:26
阅读数 141

系统一般为了安全,会对数据库进行加密,原理就是对数据库的账号密码等加密,然后访问数据库的时候,发现密码里面有特殊值,就进行解密。常见的加密方式有 druid 和 mybatis-plus 的方式。

 

mybatis-plus 的方式

YML 配置:

// 加密配置 mpw: 开头紧接加密内容( 非数据库配置专用 YML 中其它配置也是可以使用的 )
spring:
  datasource:
    url: mpw:qRhvCwF4GOqjessEB3G+a5okP+uXXr96wcucn2Pev6Bf1oEMZ1gVpPPhdDmjQqoM
    password: mpw:Hzy5iliJbwDHhjLs1L0j6w==
    username: mpw:Xb+EgsyuYRXw7U7sBJjBpA==

密钥加密:

// 生成 16 位随机 AES 密钥
String randomKey = AES.generateRandomKey();

// 随机密钥加密
String result = AES.encrypt(data, randomKey);

如何使用:

// Jar 启动参数( idea 设置 Program arguments , 服务器可以设置为启动环境变量 )
--mpw.key=d1104d7c3b616f0b

在idea中使用,

在启动文件中使用 

 java -jar xxx.jar  --mpw.key=d1104d7c3b616f0b

 

 

druid的方式。(参考:https://www.cnblogs.com/penghq/p/11162572.html

1、阿里默认只对用户密码解密
2、druid 1.0.16版本及以上的解密时需要同时配置publicKey

一.生成密文密码

1 前提:已经配置了jdk环境

1、生成密文密码需要准备druid的jar包.然后通过命令行生成,如下步骤:

1.1准备jar包

1、(示例使用 druid-0.2.23.jar),放到某目录下,且打开命令窗口(win用户可以在目录的空白处 shift+鼠标右键 打开命令窗口);

1.2.输入命令:

java -cp druid-0.2.23.jar com.alibaba.druid.filter.config.ConfigTools you_password

我要加密的密码是:123456pwd

注意:druid 1.0.16之前

java -cp druid-0.2.23.jar com.alibaba.druid.filter.config.ConfigTools 123456pwd

注意:druid 1.0.16及以后

java -cp druid-1.1.9.jar com.alibaba.druid.filter.config.ConfigTools 123456pwd >aaa.txt

二、dataSource配置 注意:druid 1.0.16之前

1.1jdbc.properties

## JDBC set
jdbc.url=jdbc\:mysql\://localhost\:3306/edu_demo?useUnicode\=true&characterEncoding\=utf-8
jdbc.username=root
jdbc.password=Obsbr4gd1oVyYr+k4KQdUMNYgKMWdDibsNJTabnph+yPmxjc6tUrT1GNsPDqa9ZvTF9QvaRD86H+Zn/H+yz2jA\=\=

1.2dataSource配置

<!-- 基于Druid数据库链接池的数据源配置 -->
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">
    <!-- 基本属性driverClassName、 url、user、password -->
    <property name="driverClassName" value="com.mysql.jdbc.Driver" />
    <property name="url" value="${jdbc.url}" />
    <property name="username" value="${jdbc.username}" />
    <property name="password" value="${jdbc.password}" />
    <!-- 配置初始化大小、最小、最大 -->
    <!-- 通常来说,只需要修改initialSize、minIdle、maxActive -->
    <property name="initialSize" value="2" />
    <property name="minIdle" value="2" />
    <property name="maxActive" value="30" />
    <property name="testWhileIdle" value="false" />
    <!-- 配置获取连接等待超时的时间 -->
    <property name="maxWait" value="5000" />
    <!-- 配置一个连接在池中最小生存的时间,单位是毫秒 -->
    <property name="minEvictableIdleTimeMillis" value="30000" />
    <!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 -->
    <property name="timeBetweenEvictionRunsMillis" value="60000" />
    <!-- 解密密码必须要配置的项 -->
    <property name="filters" value="config" />
    <property name="connectionProperties" value="config.decrypt=true" />
</bean>

注意:druid 1.0.16及以后

2.1jdbc.properties

## JDBC set
jdbc.url=jdbc\:mysql\://localhost\:3306/edu_demo?useUnicode\=true&characterEncoding\=utf-8
jdbc.username=root
jdbc.password=Obsbr4gd1oVyYr+k4KQdUMNYgKMWdDibsNJTabnph+yPmxjc6tUrT1GNsPDqa9ZvTF9QvaRD86H+Zn/H+yz2jA\=\=
jdbc.publickey = MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAKHGwq7q2RmwuRgKxBypQHw0mYu4BQZ3eMsTrdK8E6igRcxsobUC7uT0SoxIjl1WveWniCASejoQtn/BY6hVKWsCAwEAAQ==

2.2dataSource配置

<!-- 基于Druid数据库链接池的数据源配置 -->
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">
    <!-- 基本属性driverClassName、 url、user、password -->
    <property name="driverClassName" value="com.mysql.jdbc.Driver" />
    <property name="url" value="${jdbc.url}" />
    <property name="username" value="${jdbc.username}" />
    <property name="password" value="${jdbc.password}" />
    <!-- 解密密码必须要配置的项 -->
    <property name="filters" value="config" />
    <property name="connectionProperties" value="config.decrypt=true;config.decrypt.key=${jdbc.publickey}" />
    <!-- 配置初始化大小、最小、最大 -->
    <!-- 通常来说,只需要修改initialSize、minIdle、maxActive -->
    <property name="initialSize" value="2" />
    <property name="minIdle" value="2" />
    <property name="maxActive" value="30" />
    <property name="testWhileIdle" value="false" />
    <!-- 配置获取连接等待超时的时间 -->
    <property name="maxWait" value="5000" />
    <!-- 配置一个连接在池中最小生存的时间,单位是毫秒 -->
    <property name="minEvictableIdleTimeMillis" value="30000" />
    <!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 -->
    <property name="timeBetweenEvictionRunsMillis" value="60000" />
</bean>
展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部