Я пытаюсь зашифровать / расшифровать файлы с помощью PBE, используя AES.Я использую библиотеку Bouncy Casle (облегченный API), потому что мне нужно игнорировать ограничения на длину ключа.Я нашел функцию и изменил код в ней.
public void decryptLW(InputStream in, OutputStream out, String password, byte[] salt, final int iterationCount) throws Exception {
PKCS12ParametersGenerator pGen = new PKCS12ParametersGenerator(new SHA256Digest());
char[] passwordChars = password.toCharArray();
final byte[] pkcs12PasswordBytes = PBEParametersGenerator.PKCS12PasswordToBytes(passwordChars);
pGen.init(pkcs12PasswordBytes, salt, iterationCount);
CBCBlockCipher aesCBC = new CBCBlockCipher(new AESEngine());
ParametersWithIV aesCBCParams = (ParametersWithIV) pGen.generateDerivedParameters(256, 128);
aesCBC.init(false, aesCBCParams);
PaddedBufferedBlockCipher aesCipher = new PaddedBufferedBlockCipher(aesCBC, new PKCS7Padding());
try {
// Read in the decrypted bytes and write the cleartext to out
int numRead = 0;
while ((numRead = in.read(buf)) >= 0) {
byte[] plainTemp = new byte[aesCipher.getOutputSize(buf.length)];
int offset = aesCipher.processBytes(buf, 0, buf.length, plainTemp, 0);
int last = aesCipher.doFinal(plainTemp, offset);
final byte[] plain = new byte[offset + last];
System.arraycopy(plainTemp, 0, plain, 0, plain.length);
out.write(plain, 0, numRead);
}
out.close();
in.close();
} catch (java.io.IOException e) {
}
}
И у меня есть ошибка:
org.bouncycastle.crypto.InvalidCipherTextException: блок pad поврежден
в org.bouncycastle.crypto.paddings.PKCS7Padding.padCount(Неизвестный источник)
at org.bouncycastle.crypto.paddings.PaddedBufferedBlockCipher.doFinal (Неизвестный источник)
Что можно сделать, чтобы устранить эту ошибку?И что я должен изменить в этой функции, чтобы получить возможность шифровать файлы.