java  解密碰到的误导人的错误提示…

在使用Java进行DESede加密解密时遇到一个误导性的错误:'javax.crypto.BadPaddingException: pad block corrupted'。经过长时间排查,发现错误源头竟是公钥输入错误导致解密失败,而非最初认为的padding问题。此博客旨在提醒开发者此类错误可能的隐藏原因,以减少排查时间。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天碰到一个很窝火的问题
使用java进行加密

代码如下:

Security.addProvider(new com.sun.crypto.provider.SunJCE());
                                              Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider());// 添加PKCS7Padding支持
                                              Cipher cipher = Cipher.getInstance("DESede/ECB/PKCS7Padding", "BC");
                                              Key key = CipherManager.getKey(sig.getBytes("GBK"));
                                              cipher.init(Cipher.DECRYPT_MODE, key);
                                              byte[] decBytes = cipher.doFinal(CipherManager.str2ByteArr(encStr));

结果怎么都是报如下错
javax.crypto.BadPaddingException: pad block corrupted
      at org.bouncycastle.jcajce.provider.symmetric.util.BaseBlockCipher.engineDoFinal(Unknown Source)
      at javax.crypto.Cipher.doFinal(Cipher.java:2086)
     

各大网站搜索折腾好久,依旧无果
最后发现……原来是因为公钥写错了,导致解密失败,翻白中……
但是这个错误有很大的误导……发在这里,期望各位在苦海中的亲能解脱早日超生……


评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值