我有一个类似的方法。它工作正常,但问题是当我尝试解密填充错误甚至根本没有加密的文件时。通常我相信cipher.doFinal(..)通常会抛出一些与 , 相关的IllegalBlockSizeException
异常
BadPaddingException
。我相信这是由于掩盖了此处的那些异常。我的问题是我可以检测到这些异常情况吗?
public myDecryptMethod(byte[] sessionKey, FileInputStream encryptedFileStream) throws Exception{
....
SecretKeySpec symmKeySpec = new SecretKeySpec(sessionKey, "AES/CBC/PKCS5Padding");
Cipher symmCipher = Cipher.getInstance("AES/CBC/PKCS5Padding", "BC");
IvParameterSpec ivParameterSpec = new IvParameterSpec("0000000000000000".getBytes());
symmCipher.init(Cipher.DECRYPT_MODE, symmKeySpec, ivParameterSpec);
CipherInputStream cis = new CipherInputStream(encryptedFileStream, symmCipher);
byte[] inputByteArray = new byte[10240];
ByteArrayOutputStream outStream = new ByteArrayOutputStream();
while (true) {
int length = cis.read(inputByteArray);
if (length < 0)
break;
outStream.write(inputByteArray, 0, length);
}
outStream.close();
byte[] data = outStream.toByteArray();
InputStream inStream = new ByteArrayInputStream(data);
cis.close();
return inStream;
}