【问题标题】:Unable to decrypt using jasypt : Illegal Block Size Exception无法使用 jasypt 解密:非法块大小异常
【发布时间】:2019-08-06 08:24:00
【问题描述】:

我正在使用 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)

日志中的异常:

盐大小字节=[8] 加密消息长度=[21] javax.crypto.IllegalBlockSizeException:使用填充密码解密时,输入长度必须是 8 的倍数 在 com.sun.crypto.provider.CipherCore.doFinal(CipherCore.java:936) 在 com.sun.crypto.provider.CipherCore.doFinal(CipherCore.java:847) 在 com.sun.crypto.provider.PKCS12PBECipherCore.implDoFinal(PKCS12PBECipherCore.java:399) 在 com.sun.crypto.provider.PKCS12PBECipherCore$PBEWithSHA1AndDESede.engineDoFinal(PKCS12PBECipherCore.java:431) 在 javax.crypto.Cipher.doFinal(Cipher.java:2164) 在 org.jasypt.encryption.pbe.StandardPBEByteEncryptor.decrypt(StandardPBEByteEncryptor.java:1041) 在 org.jasypt.encryption.pbe.StandardPBEStringEncryptor.decrypt(StandardPBEStringEncryptor.java:725)

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

谢谢 satesh

【问题讨论】:

    标签: java jasypt java-security


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2019-04-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多