springboot 使用druid 进行数据库密码加密

1.依赖

<dependency>
			<groupId>com.alibaba</groupId>
			<artifactId>druid-spring-boot-starter</artifactId>
			<version>1.2.4</version>
		</dependency>

yml配置

spring:
  profiles:
  datasource:
    url: jdbc:mysql://127.0.0.1:3306/sys?useUnicode=true&charaterEncoding=utf-8&allowMultiQueries=true&autoReconnect=true&serverTimezone=GMT%2B8
    username: sys
    password: C6I97DiEZKvBshupiM7LpkZhsGIgbidS4bar3Pma9g1JomLvHinqIEZUsq6EQqeYOLu2TK8cNwxs5r40sclefw==
    type: com.alibaba.druid.pool.DruidDataSource
    initialSize: 10
    maxActive: 50
    minIdle: 5
    filters: config
    connection-properties: config.decrypt=true;config.decrypt.key=MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAJieFBI7jA1DMtp/kUgiOzzKS/Nd23JcdZjgBDCwsYywNP2dvONjGRzsJU0hKIML3pDLqH1mID/w6Rx4KM+7IkMCAwEAAQ==

 生产公钥 私钥 和密文的代码

import com.alibaba.druid.filter.config.ConfigTools;
import lombok.SneakyThrows;

public final class DruidEncryptorUtils {

    private static String privateKey;

    private static String publicKey;

    static {
        try {
            String[] keyPair = ConfigTools.genKeyPair(512);
            privateKey = keyPair[0];
            System.out.println(String.format("私钥加密时使用-->%s", privateKey));
            publicKey = keyPair[1];
            System.out.println(String.format("公钥解密时使用-->%s", publicKey));
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /**
     * 明文加密
     *
     * @param plaintext
     * @return
     */
    @SneakyThrows
    public static String encode(String plaintext, String yourPrivateKey) {
        if (yourPrivateKey == null) {
            yourPrivateKey = privateKey;
        }
        System.out.println("明文字符串:" + plaintext);
        String ciphertext = ConfigTools.encrypt(yourPrivateKey, plaintext);
        System.out.println("加密后字符串:" + ciphertext);
        return ciphertext;
    }

    /**
     * 解密
     *
     * @param ciphertext
     * @return
     */
    @SneakyThrows
    public static String decode(String ciphertext, String yourPublicKey ) {
        if (yourPublicKey == null) {
            yourPublicKey = publicKey;
        }
        System.out.println("加密字符串:" + ciphertext);
        String plaintext = ConfigTools.decrypt(yourPublicKey, ciphertext);
        System.out.println("解密后的字符串:" + plaintext);

        return plaintext;
    }

    public static void main(String[] args) {
        String plaintext = "TransitCenter@99";
        //秘钥为null,就生成秘钥
        String ciphertext = encode(plaintext, null);
        decode(ciphertext, null);
    }

}

如果报错

修改配置试试

spring:
  datasource:
    url: jdbc:mysql://127.0.0.1:3306/transitcenter?useUnicode=true&charaterEncoding=utf-8&allowMultiQueries=true&autoReconnect=true&serverTimezone=GMT%2B8
    username: root
    password: bNg4x/EuurFmfNsf/c1ojS9ajP90LsRbxB7wIn5Q7P4GY1Yu2d6jdtqLVGHWBQNsEiaRZr0LCsnSdjS5DJIYXw==
    type: com.alibaba.druid.pool.DruidDataSource
    initialSize: 10
    maxActive: 50
    minIdle: 5
    druid:
      filter:
        config:
          enabled: true
      connection-properties: config.decrypt=true;config.decrypt.key=MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBALivG2muOLRkAEND1O7c/mGmIJMwqY0dq3dQf6+AfXG03Jt5AsBioudS7mgViaBITOeadURJTvwRIis+8A8t08UCAwEAAQ==

### starRC、LEF 和 DEF 文件的 EDA 工具使用教程 #### 关于 starRC 的使用说明 starRC 是由 Synopsys 开发的一款用于寄生参数提取 (PEX) 的工具,在 detail routing 完成之后被调用,以提供精确的电阻电容延迟分析数据[^2]。该工具能够处理复杂的多层互连结构并支持多种工艺节点。 对于 starRC 的具体操作指南,通常可以从官方文档获取最权威的信息。访问 Synopsys 官方网站的技术资源页面,可以找到最新的产品手册以及应用笔记等资料。此外,还可以通过在线帮助系统获得交互式的指导和支持服务。 #### LEF 和 DEF 文件格式解析及其在 Cadence 中的应用 LEF(Library Exchange Format)和 DEF(Design Exchange Format)是两种广泛应用于集成电路布局布线阶段的标准文件格式之一[^3]。前者主要用于描述标准单元库中的元件几何形状;后者则记录了整个芯片版图的设计信息,包括但不限于各个模块的位置关系、网络连接情况等重要细节。 当涉及到这些文件类型的编辑或读取时,Cadence 提供了一系列强大的平台级解决方案,比如 Virtuoso Layout Editor 就可以直接打开并修改 LEF/DEF 格式的项目工程。为了更好地理解和运用这两种文件格式,建议参阅 Cadence 发布的相关培训材料或是参加其举办的专项课程学习活动。 ```bash # 示例命令:查看 LEF 或 DEF 文件内容 cat my_design.lef cat my_design.def ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值