Es gibt viele Threads auf Stack-Überlauf mit diesem Thema, und immer die gleichen Lösungen, aber das funktioniert nicht für mich. Ich suche nach einer Möglichkeit, den Wert byte[]
verschlüsselt zu entschlüsseln und byte[]
decodiertBytes zurückzugeben.Verschlüsselungsfunktionen: WRONG FINAL BLOCK LÄNGE Android Studio
Mit der Methode AESCrypt. Ich benutze compile 'com.scottyab:aescrypt:0.0.1'
private void testAES() {
try {
final byte[] encrypted = Base64.decode("R3JhbmRlIFZpY3RvaXJlICE=", Base64.NO_WRAP);
byte[] keyBytes = Base64.decode("L/91ZYrliXvmhYt9FKEkkDDni+PzcnOuV9cikm188+4=", Base64.NO_WRAP);
final byte[] ivBytes = Base64.decode("gqjFHI+YQiP7XYEfcIEJHw==".getBytes(), Base64.NO_WRAP);
final SecretKeySpec keySpec = new SecretKeySpec(keyBytes, "AES");
byte[] decodedBytes = AESCrypt.decrypt(keySpec, ivBytes, encrypted);
} catch (Exception e) {
e.printStackTrace();
}
}
Mit dem Wert Cipher, ich benutze es so.
private static byte[] testCipher() {
try {
final byte[] encrypted = Base64.decode("R3JhbmRlIFZpY3RvaXJlICE=", Base64.NO_WRAP);
byte[] keyBytes = Base64.decode("L/91ZYrliXvmhYt9FKEkkDDni+PzcnOuV9cikm188+4=", Base64.NO_WRAP);
byte[] ivBytes = Base64.decode("gqjFHI+YQiP7XYEfcIEJHw==".getBytes(), Base64.NO_WRAP);
final IvParameterSpec ivSpecForData = new IvParameterSpec(ivBytes);
SecretKeySpec decodedKeySpec = new SecretKeySpec(keyBytes, "AES");
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
cipher.init(Cipher.DECRYPT_MODE, decodedKeySpec, ivSpecForData);
byte[] decodedBytes = cipher.doFinal(encrypted); // I have the error here //
return decodedBytes;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
Was immer ich tue, habe ich durchweg den gleichen Fehler:
error:1e06b07b:Cipher functions:EVP_DecryptFinal_ex:WRONG_FINAL_BLOCK_LENGTH
Ich versuche in Cipher.getInstance (AES/CBC/NoPadding, AES/CBC/PKCS5Padding, AES/setzen CBC/PKCS7Padding) aber nichts ändert sich. Hast du eine Idee, mir zu helfen?
Willkommen bei Stack Overflow! Ein Füllfehler kann eine beliebige Anzahl von Dingen bedeuten: falscher Schlüssel, falsche Kodierung, unvollständiger/überfüllter Chiffretext. Sie sollten den Verschlüsselungscode anzeigen und die von Ihnen verwendeten Beispielwerte angeben. Ansonsten wäre es einfach zu erraten, was mit diesem Code (oder dem Verschlüsselungscode) falsch ist. Kurz gesagt, erstellen Sie ein [minimales, vollständiges und verifizierbares Beispiel] (http://stackoverflow.com/help/mcve). –