springboot 集成 jasypt 实现对配置文件非明文展示-详解

Jasypt 即Java Simplified Encryption。是一个Java库,允许开发人员以最小的努力将基本的加密功能添加到他/她的项目中,而无需对加密的工作原理有深入的了解。

可无缝集成到Spring应用程序中,并具有针对Spring 2,Spring 3.0,Spring 3.1和Spring 4.0的特定集成功能。jasypt中的所有摘要器和加密器都设计为可以从Spring轻松使用(实例化,依赖注入...)。并且,由于它们是线程安全的,因此可以在像Spring这样的面向单例的环境中使用而无需担心同步

二进制加密支持。Jasypt允许对二进制文件(字节数组)进行摘要和加密。在需要时加密对象或文件(例如,通过网络发送)。

支持数字加密。除了文本和二进制文件,它还允许对数值进行摘要和加密(BigInteger和BigDecimal,在加密以保持Hibernate持久性时,还支持其他数字类型)

以上是官方文档中对于jaspyt的介绍。总之一句话,jaspyt简单易用,可以满足基本的简单加密需求

接下来看一下如何使用他

第一步:引入jasypt依赖

此处要注意引入的jaspyt版本号和springboot项目的版本号要对应上。springboot是2.x版本的,那么jaspyt的版本也要找2.x版本的。

这里直接引入的是jasypt-spring-boot-starter,即springboot集成的启动器stater,有的博主写的是引入jasypt-spring-boot(引入这一个依赖还需要在Application类上添加注解,比较繁琐,所以建议引入jasypt-spring-boot-starter这个依赖。)

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

第二步:选定加密私钥,使用jaspyt工具类将要加密的文本进行加密

假如我们本次选择的加密私钥为jaspyt-test.那么我们就在下面的工具类中,修改一下加解密的密钥,配置为我们想要设置的密钥。然后在main方法中,把我们想要加密的文本加密了。保留住,第三步要使用。

package com.eastport.swimport.util;
import org.jasypt.encryption.pbe.StandardPBEStringEncryptor;
import org.jasypt.encryption.pbe.config.EnvironmentPBEConfig;
public class CryptorTest {

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

        // 加密的算法,这个算法是默认的
        config.setAlgorithm("PBEWithMD5AndDES");
        //加密的密钥,自定义
        config.setPassword("jaspyt-test");
        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("jaspyt-test");
        standardPBEStringEncryptor.setConfig(config);
        String plainText = standardPBEStringEncryptor.decrypt(encryptedText);
        System.out.println(plainText);
    }

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

第三步:将选定的私钥 和 加密后的串配置到配置文件中

首先在总配置文件中,指定一下我们加密的私钥是什么(因为如果涉及到环境切换的话,配置这里比较省事),即开启程序中jaspyt的配置,同时告诉程序,加解密的私钥是什么。如下图所示

然后将我们加密之后得到的 串 配置到对应的开发、测试、生产环境对应的配置文件中。注意必须是ENC()包住我们加密的串。

到这一步就算完成了我们的springboot集成jaspyt。

 

实现之后我们发现,其实这样的操作只能实现一个非明文展示的效果,如果窃密者拿到我们的配置文件的话,通过我们配置的私钥和jaspyt工具类也能解密出来我们的信息。所以这个jaspyt的用途只能是非明文的配置方式进行相关配置。并不能实现真正的加密。

如果实践过程有什么问题,欢迎提问一起交流

转载清注明出处。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Jasypt(Java Simplified Encryption)是一个Java加密库,它可以用来加密/解密本、哈希密码等。Spring Boot提供了对Jasypt的支持,可以在应用程序中轻松使用Jasypt来加密敏感信息。下面是使用Jasypt对MySQL配置文件进行加密的步骤: 1. 引入Jasypt依赖 在pom.xml文件中添加以下依赖: ```xml <dependency> <groupId>com.github.ulisesbocchio</groupId> <artifactId>jasypt-spring-boot-starter</artifactId> <version>2.2.0</version> </dependency> ``` 2. 配置加密 在application.properties或者application.yml中添加以下配置: ```properties jasypt.encryptor.password=your_password ``` 其中,your_password是用来加密敏感信息的密码。 3. 加密MySQL配置信息 在application.properties或者application.yml中加入MySQL配置信息,如下: ```properties spring.datasource.url=jdbc:mysql://localhost:3306/test spring.datasource.username=root spring.datasource.password=root ``` 将密码部分使用Jasypt进行加密,如下: ```properties spring.datasource.url=jdbc:mysql://localhost:3306/test spring.datasource.username=root spring.datasource.password=ENC(加密后的密码) ``` 其中,加密后的密码可以使用Jasypt提供的加密工具进行加密。例如,我们可以使用以下命令生成加密后的密码: ``` java -cp jasypt-1.9.2.jar org.jasypt.intf.cli.JasyptPBEStringEncryptionCLI input="root" password="your_password" algorithm=PBEWithMD5AndDES ``` 其中,jasypt-1.9.2.jar是Jasypt的jar包,your_password是用来加密敏感信息的密码。执行以上命令后,会输出加密后的密码。 4. 配置解密 在启动应用程序时,Spring Boot会自动解密加密的敏感信息。因此,我们不需要任何额外的配置来解密MySQL密码。只需将加密后的密码放入配置文件即可。 至此,我们已经成功地使用Jasypt对MySQL配置文件进行了加密。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值