小墨の博客

梦想需要付诸行动,否则只能是梦

SpringBoot 项目 jasypt-spring-boot 加密的配置如何解密出原文

最近入职了新公司,接手了一个Java项目。这个项目里面没有数据库连接的配置,配置写在公司的公共nacos服务配置中了,并且已经加密,所以没有办法直接拿到项目的密码。

image.png

由于本人社恐不善于跟导师沟通,而且这个项目写的很抽象,这就导致了我连不上公司项目的测试数据库,也就导致了没有办法进一步往下进行。

但是因为社恐,所以不到万不得已是不可能去问导师的,所以就开始自己研究。

其实基本思路很简单,我不管你加不加密,只要你连数据库,那你就肯定得先拿到数据库账号密码的原文才能连接上的。所以我们其实不用关心他具体是怎么加密的,只需要跟进代码,拿到解密后的原文即可。

首先,要知道项目使用什么包进行加解密的,我是直接翻项目的各个pom.xml文件,找到了这么一个依赖:

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

然后去这个人的GitHub上看了一下,发现了这个GitHub仓库:https://github.com/ulisesbocchio/jasypt-spring-boot

通过阅读项目的README.md,可以确定就是用的这个库进行的配置项加解密。

image.png



本着万事不觉先Google(划掉,破垃圾公司内网只能查百度 or bing)的原则,找到了思路

思路来自这篇 CSDN 博客:https://blog.csdn.net/m0_37635053/article/details/118256179

这篇博客写的很详细,但是我不想研究那么通透,所以直接参考了其中加密的部分,修改成解密的部分了,具体如下:


首先,先检查项目中有没有这个依赖:

        <dependency>
            <groupId>org.jasypt</groupId>
            <artifactId>jasypt</artifactId>
            <version>1.9.3</version>
            <scope>compile</scope>
        </dependency>

如果没有的话可以先添加一下(如果其他地方没用到,解密之后就可以删掉这个依赖了)

然后在项目里面随便找个地方,我就直接写到登录的Controller接口里面了

        BasicTextEncryptor textEncryptor = new BasicTextEncryptor();
        textEncryptor.setPassword("本地配置文件中,jasypt.encryptor配置的password");
        String username = textEncryptor.decrypt("密文,也就是ENC(xxxxxx)括号里面的部分");
        String password = textEncryptor.decrypt("密文,也就是ENC(xxxxxx)括号里面的部分");
        System.out.println("username===" + username);
        System.out.println("password===" + password);

其中 textEncryptor.setPassword 传入参数就是本地配置文件中的 jasypt.encryptor.password

image.png

然后在这里打一个断点,调一下接口让程序走到这里来,就可以在下面的调试控制台看到解密后的原文了。


到此,密码就拿到手了。

难受的是,当我研究完这一套之后,导师把密码告诉我了... 我淦!

所以说,有时候多问问还是有好处的哈哈哈,就这样,又水了一篇文章。

张小弟之家

本文链接:
文章标题:

本站文章除注明转载/出处外,均为原创,若要转载请务必注明出处。转载后请将转载链接通过邮件告知我站,谢谢合作。本站邮箱:admin@only4.work

尊重他人劳动成果,共创和谐网络环境。点击版权声明查看本站相关条款。

    发表评论:

    搜索
    本文二维码
    标签列表
    站点信息
    • 文章总数:533
    • 页面总数:20
    • 分类总数:96
    • 标签总数:212
    • 评论总数:63
    • 浏览总数:274202

    | | |
    | |  Z-Blog PHP