javax.crypto.BadPaddingException: pad block corrupted

版权声明:本文为博主原创文章,转载请务必注明作者与原文链接。 https://blog.csdn.net/jingerppp/article/details/83996729

做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 的时候需要留出来

详细看:

数据加密 ---- 总篇

猜你喜欢

转载自blog.csdn.net/jingerppp/article/details/83996729