美文网首页程序员
优雅编程 - 配置加密

优雅编程 - 配置加密

作者: 林昀熙 | 来源:发表于2019-12-20 07:42 被阅读0次

SpringBoot配置默认情况下是明文显示,安全性就比较低一些。jasypt该插件可以对配置文件进行加密, 提高配置的安全性

插件引入

<dependency>
    <groupId>com.github.ulisesbocchio</groupId>
    <artifactId>jasypt-spring-boot-starter</artifactId>
    <version>2.1.0</version>
</dependency>

组件说明

使用组件原生API进行加解密,说明: 每次编码生成的编码结果串都会不一样, 均可以逆向解析.

编解码示例

/**
 * 编码
 * @param keyt 秘钥
 * @param source 原始数据
 * @return 这里每次加密后的密文结果都不一样
 */
public static String encrypt(String keyt, String source){
    StandardPBEStringEncryptor encryptor = new StandardPBEStringEncryptor();
    encryptor.setPassword(keyt);
    // 默认算法为"PBEWithMD5AndDES"
    encryptor.setAlgorithm("PBEWithMD5AndDES");
    return encryptor.encrypt(source);
}

/**
 * 解码
 * @param keyt 秘钥
 * @param source ji
 * @return
 */
public static String decrypt(String keyt, String source){
    StandardPBEStringEncryptor encryptor = new StandardPBEStringEncryptor();
    encryptor.setPassword(keyt);
    // 默认算法为"PBEWithMD5AndDES"
    encryptor.setAlgorithm("PBEWithMD5AndDES");
    return encryptor.decrypt(source);
}   

测试编解码

public static void main(String[] args) {
    // 秘钥
    String kept = "123456A";
    String source = "配置加解密";
    String target = encrypt(kept, source);
    System.out.println("目标数据:" + source + " \n加密结果:" + target + " \n解密结果:" + decrypt(kept, target));
}

输出结果

目标数据:配置加解密 
加密结果:5eZ9Jf/7A75hdoVMhuqcufSFKE/GiVyp 
解密结果:配置加解密

SpringBoot中应用

引入插件依赖, 然后在配置文件中做如下简易配置.

密钥配置

配置秘钥,该步必须配置,该密钥用来对配置文件进行加解密, 对应上述示例中的kept(密钥参数)

# 加密密码
jasypt.encryptor.password=1234ABCD

密文串配置

jasypt是通过识别配置文件中的ENC()标签来进行密文解密的,所以我们需要将受保护的配置做如下配置修改.

# 使用ENC()标签配置密文串
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/ENC(9JXD/P35350dt+R3479d6uZQ==)?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&useSSL=false
spring.datasource.username=ENC(t+xp3NnBBFmcAePD459==)
spring.datasource.password=ENC(A0nQxK1oPaNnBBBFmcgoTI+FFnNnBB+sdEQmUg=)

相关文章

网友评论

    本文标题:优雅编程 - 配置加密

    本文链接:https://www.haomeiwen.com/subject/getvnctx.html