欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

application.properties数据库敏感信息加密这么简单?

程序员文章站 2022-05-01 23:28:20
...

写在前面

俗话说:”顾客是上帝“,身为程序员的我有时会直接对接客户方提出的需求,毕竟我处在提供服务的一方,所以我也会尽量的满足临时的要求。前些天就有了一个满足漏洞检测的需求,想要把数据库的明文敏感信息加密,其实也就是密码加密,所以也就有了这篇文章,我的项目是springboot结构,修改其实也挺简单,废话少说,上代码。

这里使用的是 jasypt,而它是一个java实现的安全框架

1.Maven的pom.xml依赖

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

2.通过测试类验证加密加密

测试类如下

import org.jasypt.encryption.pbe.StandardPBEStringEncryptor;
import org.jasypt.encryption.pbe.config.EnvironmentPBEConfig;

/**
 * Created By charmsongo 21:04 2018/11/30
 */
public class CryptorTest {

    /**
     * 加密方法
     * @param plainText 需加密文本
     */
    public static void testEncrypt(String plainText) {
        StandardPBEStringEncryptor standardPBEStringEncryptor = new StandardPBEStringEncryptor();
        EnvironmentPBEConfig config = new EnvironmentPBEConfig();

        // 加密的算法,这个算法是默认的
        config.setAlgorithm("PBEWithMD5AndDES");
        //加密的**,自定义
        config.setPassword("CSEbfYkitulv73I2p0mXI50JMXoaxZTKJ7");
        standardPBEStringEncryptor.setConfig(config);
        String encryptedText = standardPBEStringEncryptor.encrypt(plainText);
        System.out.println(encryptedText);
    }

    /**
     * 解密方法
     * @param encryptedText 需解密文本
     */
    public static void testDecrypt(String encryptedText) {
        StandardPBEStringEncryptor standardPBEStringEncryptor = new StandardPBEStringEncryptor();
        EnvironmentPBEConfig config = new EnvironmentPBEConfig();

        // 解密的算法,需同加密算法相同
        config.setAlgorithm("PBEWithMD5AndDES");
        //解密的**,需同加***相同
        config.setPassword("CSEbfYkitulv73I2p0mXI50JMXoaxZTKJ7");
        standardPBEStringEncryptor.setConfig(config);
        String plainText = standardPBEStringEncryptor.decrypt(encryptedText);
        System.out.println(plainText);
    }

    public static void main(String[] args){
        testEncrypt("root");
        testDecrypt("TU1NovjRHGyjp7cSc6v0sQ==");
    }
}

运行main方法结果如下

TU1NovjRHGyjp7cSc6v0sQ==
root

3.application.properties中配置修改

##mysql-----修改前配置
spring.datasource.url=jdbc:mysql://192.168.2.105/mysql?characterEncoding=utf8&useSSL=true
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.jdbc.Driver

##mysql-----修后前配置
jasypt.encryptor.password=CSEbfYkitulv73I2p0mXI50JMXoaxZTKJ7#引入**
spring.datasource.url=jdbc:mysql://192.168.2.105/mysql?characterEncoding=utf8&useSSL=true
spring.datasource.username=root
spring.datasource.password=ENC(TU1NovjRHGyjp7cSc6v0sQ==)
spring.datasource.driver-class-name=com.mysql.jdbc.Driver

使用 jasypt 加密数据库敏感信息的任务现在就可以交工了,但是看完您会发现,这样也不是特别安全的,确实。。。所以您有什么更好的加密方法欢迎留言