- 明文密码+私钥(privateKey)加密=加密密码
- 加密密码+公钥(publicKey)解密=明文密码
1.Driver的加解密有关的API
import java.util.List;
@SpringBootTest
class DeleApplicationTests {
void generateKey() throws Exception {
// 不使用公私钥
// 加密,参数为要加密的文本
String plainText = ConfigTools.encrypt("plainText");
// 解密,参数为加密后的文本
String decrypt = ConfigTools.decrypt(plainText);
// 使用公私钥,返回字符串
// 生成密钥对,参数为密钥大小,最小值为512
String[] strings = ConfigTools.genKeyPair(512);
// strings[0]:私钥
// strings[1]:公钥
// 返回字节数组
// byte[][] bytes = ConfigTools.genKeyPairBytes(512);
// 加密
String plainText1 = ConfigTools.encrypt(strings[0], "plainText");
// 解密
String decrypt1 = ConfigTools.decrypt(strings[1], plainText1);
}
}
2.yml 文件中对数据库密码加密的操作
spring:
datasource:
type: com.alibaba.druid.pool.DruidDataSource
username: root
# 此处使用公钥加密过的密码
password: AC25pHo0vjwUrHE/YWhcbi2GJ8ZNZQoecj75EgRgWpCtyfrDioyTZVZ5u62paxgPwgk4lhBg/YIfKJpniiWpbVU=
url: jdbc:mysql://localhost:3306/del?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
driver-class-name: com.mysql.cj.jdbc.Driver
druid:
db-type: mysql
filter:
config:
# 开启此配置,如果为false,则上面的密码要为明文密码
enabled: true
connect-properties:
# 是否要解密,如果为false,则上面的密码要为明文密码
config.decrypt: true
# 此处为公钥,可以省略此配置,如果省略,则上面的密码在加密时可以不使用公钥加密
config.decrypt.key: MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAX7VAzNfTT/SAdpYEE04C0t7DG+RjhwhtDIgBvq1v9j0gnu3oub/VXe2udK55Wm6LcnNRkSEO4ZwgXJhKbAoHOUCAwEAAQ==
mybatis-plus:
configuration:
# 打印sql语句
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl