使用Jaspyt对配置文件密码保护

1、 添加依赖

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

2、生成明文的密文串

    @Test
    public void encrypt() {
        String password = "123456abc"; // 原明文密码(待加密)
        String salt = "salt"; // 用于要加密的口令(保护好)
        String[] arg = {"input=" + password, "password=" + salt, "algorithm=PBEWithMD5AndDES", "ivGeneratorClassName=org.jasypt.iv.NoIvGenerator"};
        JasyptPBEStringEncryptionCLI.main(arg);
    }

OUTPUT:

MnGfUY6+XB84m7YxEeq5JHLJFyI1iCQd

里的串即为密文,每次加密出来的结果都不一样,但解密后一样。

3、配置文件修改

将原密码替换成:ENC(密文串) 这种格式

spring:
  datasource:
    username: root
    password: ENC(MnGfUY6+XB84m7YxEeq5JHLJFyI1iCQd)

jasypt:
  encryptor:
    password: salt

注:jasypt.encryptor.password可以不配在yml里,通过spring boot 启动参数,salt为自定义口令,需要保护好。

java -jar your-app.jar --jasypt.encryptor.password=salt

或配置一个叫jasypt.encryptor.password的环境变量,启动时会自动读取

4、解密

知道密文串、口令、加密算法,是可以解密的,所以要保护好这三个值,解密:

    @Test
    public void decrypt() {
        String cypherString = "MnGfUY6+XB84m7YxEeq5JHLJFyI1iCQd"; // 原明文密码(待加密)
        String salt = "salt"; // 用于要解密的口令(保护好)
        String[] arg = {"input=" + cypherString, "password=" + salt, "algorithm=PBEWithMD5AndDES", "ivGeneratorClassName=org.jasypt.iv.NoIvGenerator"};
        JasyptPBEStringDecryptionCLI.main(arg);
    }

输出:
123456abc

posted @   漠孤烟  阅读(109)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
点击右上角即可分享
微信分享提示