版权声明:本文为博主原创文章,转载请务必注明作者与原文链接。 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 的时候需要留出来
详细看: