javax.crypto.BadPaddingException: pad block corrupted

本文探讨了在使用AES、DES等加密算法时遇到的BadPaddingException问题,解析了错误原因并提供了检查方法,包括确认padding模式是否正确及数据是否符合padding要求。

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

做AES、DES 等加密的时候会出现该类问题:

12-10 05:19:13.658  2104  2463 W System.err: javax.crypto.BadPaddingException: pad block corrupted
12-10 05:19:13.659  2104  2463 W System.err: 	at com.android.org.bouncycastle.jcajce.provider.symmetric.util.BaseBlockCipher$BufferedGenericBlockCipher.doFinal(BaseBlockCipher.java:1306)
12-10 05:19:13.659  2104  2463 W System.err: 	at com.android.org.bouncycastle.jcajce.provider.symmetric.util.BaseBlockCipher.engineDoFinal(BaseBlockCipher.java:1139)
12-10 05:19:13.659  2104  2463 W System.err: 	at javax.crypto.Cipher.doFinal(Cipher.java:1741)
12-10 05:19:13.659  2104  2463 W System.err: 	at com.shift.encrytion.core.BlockEncryptionHelper.encrypt(BlockEncryptionHelper.java:130)
12-10 05:19:13.659  2104  2463 W System.err: 	at com.shift.encrytion.des.DESHelper.encrypt(DESHelper.java:17)
12-10 05:19:13.659  2104  2463 W System.err: 	at com.shift.encrytion.des.DESEncryption.encrypt(DESEncryption.java:24)
12-10 05:19:13.659  2104  2463 W System.err: 	at com.shift.encrytion.core.BlockEncryption.decryptFile(BlockEncryption.java:103)
12-10 05:19:13.659  2104  2463 W System.err: 	at com.shift.encrytion.FileEncryption.decryptFiles(FileEncryption.java:175)
12-10 05:19:13.659  2104  2463 W System.err: 	at com.shift.encrytion.FileEncryption.operation(FileEncryption.java:210)
12-10 05:19:13.659  2104  2463 W System.err: 	at com.shift.encrytion.FileEncryption.-wrap0(Unknown Source:0)
12-10 05:19:13.659  2104  2463 W System.err: 	at com.shift.encrytion.FileEncryption$EncryptionTask.doInBackground(FileEncryption.java:223)
12-10 05:19:13.660  2104  2463 W System.err: 	at com.shift.encrytion.FileEncryption$EncryptionTask.doInBackground(FileEncryption.java:221)
12-10 05:19:13.660  2104  2463 W System.err: 	at android.os.AsyncTask$2.call(AsyncTask.java:333)
12-10 05:19:13.660  2104  2463 W System.err: 	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
12-10 05:19:13.661  2104  2463 W System.err: 	at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:245)
12-10 05:19:13.661  2104  2463 W System.err: 	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1162)
12-10 05:19:13.661  2104  2463 W System.err: 	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636)
12-10 05:19:13.661  2104  2463 W System.err: 	at java.lang.Thread.run(Thread.java:764)

从提示来看是padding 设置的不对,确定如下几点:

1、padding 是否是该算法支持的

例如,在android 中DES 支持的是ISO10126Padding、NoPadding、PKCS5Padding,其他的肯定有问题

2、加密、解密时的数据是否按照padding 的格式来的

例如,AES 中使用PKCS5Padding,如果数据正好16字节,那么加密后的数据应该是32字节,多了16字节的padding,这部分的空间在coding 的时候需要留出来

详细看:加密数据的填充方式(Padding)

 

其他算法详细看:

数据加密 ---- 总篇

 

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

私房菜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值