gpt4 book ai didi

java - 无法使用 jasypt 解密 : Illegal Block Size Exception

转载 作者:行者123 更新时间:2023-12-02 02:07:00 25 4
gpt4 key购买 nike

我正在使用Jasypt来加密和解密属性文件中的敏感数据。我开始注意到 IllegalBlockSizeException。我更新了 jasypt 代码以找出实际错误是什么(默认情况下 jasypt 会屏蔽 Error 并抛出 org.jasypt.exceptions.EncryptionOperationNotPossibleException)

加密和解密在我的开发机器上运行得非常好。当我复制本地或使用 Jenkins 构建的 jar 时,我看到此错误。

我使用的本地JDK版本是:

λ java -version
java version "1.8.0_202"
Java(TM) SE Runtime Environment (build 1.8.0_202-b08)
Java HotSpot(TM) 64-Bit Server VM (build 25.202-b08, mixed mode)

这是我们在服务器上的 jdk 版本(我尝试了多个版本并得到了相同的错误)

java version "1.8.0_191"
Java(TM) SE Runtime Environment (build 1.8.0_191-b26)
Java HotSpot(TM) 64-Bit Server VM (build 25.191-b26, mixed mode)

openjdk version "1.8.0_201"
OpenJDK Runtime Environment (build 1.8.0_201-b09)
OpenJDK 64-Bit Server VM (build 25.201-b09, mixed mode)

日志中的异常:

Salt Size Bytes=[8] Encrypted Message Length=[21] javax.crypto.IllegalBlockSizeException: Input length must be multiple of 8 when decrypting with padded cipher at com.sun.crypto.provider.CipherCore.doFinal(CipherCore.java:936) at com.sun.crypto.provider.CipherCore.doFinal(CipherCore.java:847) at com.sun.crypto.provider.PKCS12PBECipherCore.implDoFinal(PKCS12PBECipherCore.java:399) at com.sun.crypto.provider.PKCS12PBECipherCore$PBEWithSHA1AndDESede.engineDoFinal(PKCS12PBECipherCore.java:431) at javax.crypto.Cipher.doFinal(Cipher.java:2164) at org.jasypt.encryption.pbe.StandardPBEByteEncryptor.decrypt(StandardPBEByteEncryptor.java:1041) at org.jasypt.encryption.pbe.StandardPBEStringEncryptor.decrypt(StandardPBEStringEncryptor.java:725)

我编写了一个测试实用程序并在服务器上编译了它并运行了加密和解密测试,它们工作正常。这意味着 JRE 中的策略不是问题。

谢谢萨泰什

最佳答案

我能够解决这个问题。这是一个愚蠢的错误。

在 Spring bean 中设置为解密属性的值被设置为 prop 文件中两个属性的串联!!

添加调试语句以实际记录正在解密的值有助于解决问题。

关于java - 无法使用 jasypt 解密 : Illegal Block Size Exception,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57352926/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com