So entschlüsseln Sie eine AES-verschlüsselte Datei mit dem Parameter '-nosalt'

Ich bin neu in der Verschlüsselung. Diese Frage ist eine Unterfrage meiner vorherigen. Ich habe eine Datei mit OpenSSL util verschlüsselt:

openssl aes-256-cbc -in fileIn -out fileOUT -p -k KEY

Ich benutze diesen Code, um es zu entschlüsseln:

        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);

Und es funktioniert. Dies ist jedoch ein Testfall. Die reale Situation ist, dass ich die Datei mit diesen Parametern verschlüsselt habe:

openssl aes-256-cbc -nosalt -in fileIn -out fileOUT -p -k KEY

Beachten Sie, dass der Parameter '-nosalt' angezeigt wurde. Das Problem ist, dass PBEKeySpec nicht null und nicht leer erfordertsalt unditerationsCount params. Es gibt auch einen Konstruktor ohne diese Parameter, aber wenn ich ihn verwende, erhalte ich eine Fehlermeldung:

02-11 11: 25: 06.108: W / System.err (2155): java.security.InvalidKeyException: Für PBE müssen PBE-Parameter festgelegt werden.

Die Frage ist, wie man diese Dateien entschlüsselt. Wie gehe ich mit dem Parameter '-nosalt' richtig um?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage