Cómo descifrar el archivo cifrado AES con el parámetro '-nosalt'
Soy nuevo en el cifrado. Esta pregunta es una pregunta de mi anterior. Tengo un archivo encriptado con OpenSSL util:
openssl aes-256-cbc -in fileIn -out fileOUT -p -k KEY
Estoy usando este código para descifrarlo:
byte[] encrypted = IOUtils.toByteArray(inputStream);
Security.addProvider(new BouncyCastleProvider());
String password = "abc";
Cipher c = Cipher.getInstance("AES/CBC/PKCS5Padding", "BC");
// Openssl puts SALTED__ then the 8 byte salt at the start of the
// file. We simply copy it out.
byte[] salt = new byte[8];
System.arraycopy(encrypted, 8, salt, 0, 8);
SecretKeyFactory fact = SecretKeyFactory.getInstance(
"PBEWITHMD5AND256BITAES-CBC-OPENSSL", "BC");
c.init(Cipher.DECRYPT_MODE, fact.generateSecret(new PBEKeySpec(
password.toCharArray(), salt, 100)));
// Decrypt the rest of the byte array (after stripping off the salt)
byte[] data = c.doFinal(encrypted, 16, encrypted.length - 16);
Y funciona. Pero este es un caso de prueba. La situación real es que tengo un archivo cifrado con estos parámetros:
openssl aes-256-cbc -nosalt -in fileIn -out fileOUT -p -k KEY
Observe que apareció el parámetro '-nosalt'. El problema es que PBEKeySpec no requiere nulo y no está vacíosalt
yiterationsCount
params También tiene un constructor sin estos parámetros, pero si lo uso, aparece un error:
02-11 11: 25: 06.108: W / System.err (2155): java.security.InvalidKeyException: PBE requiere que se configuren los parámetros de PBE.
La pregunta es cómo descifrar estos archivos. ¿Cómo manejar el parámetro '-nosalt' correctamente?