Я получаю это исключение при декодировании закодированной строки.В некоторых случаях это работает нормально, но если я вставляю большой код шифра для расшифровки, это дает мне исключение следующим образом:
org.bouncycastle.crypto.InvalidCipherTextException: pad block corrupted
at org.bouncycastle.crypto.paddings.PKCS7Padding.padCount(Unknown Source)
at org.bouncycastle.crypto.paddings.PaddedBufferedBlockCipher.doFinal(Unknown
Source)
со следующим кодом ..
public byte[] encryptAES256(byte[] input, byte[] key) throws InvalidCipherTextException {
assert key.length == 32;
CipherParameters cipherParameters = new KeyParameter(key);
BlockCipher blockCipher = new AESEngine();
BlockCipherPadding blockCipherPadding = new PKCS7Padding();
BufferedBlockCipher bufferedBlockCipher = new PaddedBufferedBlockCipher(blockCipher, blockCipherPadding);
return encrypt(input, bufferedBlockCipher, cipherParameters);
}
public byte[] decryptAES256(byte[] input, byte[] key) throws InvalidCipherTextException {
assert key.length == 32;
CipherParameters cipherParameters = new KeyParameter(key);
BlockCipher blockCipher = new AESEngine();
BlockCipherPadding blockCipherPadding = new PKCS7Padding();
BufferedBlockCipher bufferedBlockCipher = new PaddedBufferedBlockCipher(blockCipher, blockCipherPadding);
return decrypt(input, bufferedBlockCipher, cipherParameters);
}
public byte[] process(byte[] input, BufferedBlockCipher bufferedBlockCipher, CipherParameters cipherParameters, boolean forEncryption) throws InvalidCipherTextException {
bufferedBlockCipher.init(forEncryption, cipherParameters);
byte[] rv = new byte[bufferedBlockCipher.getOutputSize(input.length)];
int tam = bufferedBlockCipher.processBytes(input, 0, input.length, rv, 0);
try {
bufferedBlockCipher.doFinal(rv, tam);
return rv;
} catch (Exception e) {
e.printStackTrace();
}
return rv;
}
public byte[] decrypt(byte[] input, BufferedBlockCipher bufferedBlockCipher,
CipherParameters cipherParameters) throws InvalidCipherTextException {
boolean forEncryption = false;
return process(input, bufferedBlockCipher, cipherParameters, forEncryption);
}
Может кто-топомогите разобраться, почему я получаю это исключение?