У меня есть файл двоичных данных в кодировке base64, предоставленных другой системой, которые я могу успешно расшифровать с помощью следующей командной строки openssl.
openssl enc -d -blowfish -a -in base64d_encrypted_content.txt
(К сожалению, все, что я знаю о применяемом шифровании)
В Java, как я могу выполнить такое же дешифрование?
В настоящее время у меня есть ...
BufferedReader reader = new BufferedReader(new InputStreamReader(content.getInputStream()));
StringBuffer buffer = new StringBuffer();
String line = reader.readLine();
while (line != null) {
buffer.append(line + "\n");
line = reader.readLine();
}
reader.close();
BASE64Decoder decoder = new BASE64Decoder();
byte[] decodedBytes = decoder.decodeBuffer(buffer.toString());
SecretKeySpec blowfishKey = new SecretKeySpec(password, "Blowfish");
Cipher blowfishCipher = Cipher.getInstance("Blowfish");
blowfishCipher.init(Cipher.DECRYPT_MODE, blowfishKey);
byte[] decryptedBytes = blowfishCipher.doFinal(decodedBytes);
но я получаю следующее исключение ...
Caused by: javax.crypto.BadPaddingException: Given final block not properly padded
at com.sun.crypto.provider.SunJCE_f.b(DashoA13*..)
at com.sun.crypto.provider.SunJCE_f.b(DashoA13*..)
at com.sun.crypto.provider.BlowfishCipher.engineDoFinal(DashoA13*..)
at javax.crypto.Cipher.doFinal(DashoA13*..)