Java und AES-Decrypt (CBC)

Hallo alle zusammen,

ich versuche einen verschlüsselten String zu dekodieren, der mir von einer Applikation geschickt wird.
Zur Verschlüsslung habe ich folgende Infos:
- Typ: AES 128 bit
- Mode: CBC
- Blocklänge 16 byte (padding)
- IV -> random
- Key -> p_key[16] = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f };

Die Applikation auf der Gegenseite macht folgendes:
Es wird ein frei gewählter String nach oben beschriebenen Verfahren verschlüsselt und in Hex-Form zu mir übertrage. Ein Beispiel von solch einem verschlüsselten Block sähe so aus:
802E5AF8892463EE921A6CE49B1075DA

Jetzt möchte ich das ganze gerne wieder entschlüsseln.

Ich habe folgende Appliaktion begonnen, die allerdings immer in einen Fehler läuft:
Code:
byte[] raw = {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f};
SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES");
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
byte[] encrypted = HexToChar("802E5AF8892463EE921A6CE49B1075DA");
cipher.init(Cipher.DECRYPT_MODE,skeySpec);
byte[] original = cipher.doFinal(encrypted);
String originalString = new String(original);
System.out.println("Original string: " + originalString);

Ich bekomme immer wieder die Fehlermeldung, dass Parameter fehlen:
java.security.InvalidKeyException: Parameters missing
at com.sun.crypto.provider.SunJCE_f.a(DashoA13*..)
at com.sun.crypto.provider.AESCipher.engineInit(DashoA13*..)
...


Kann mir einer sagen, wie ich mein Problem beheben kann?

Würde mich über Hilfe sehr freuen.
Vielleicht kann mir ja jemand sagen, was ich kodiert habe? :)

Gruß
meinereiner
 
Hallo,

und Danke für deien Antwort.
Das habe ich auchs chon versucht. Mein Problem ist nur, dass meine Apllikationen nur einen Randomvektor erstellt.
Ich kann deswegen beim skeySpec leider nicht mit SHA1 o.ä. initialisieren.

Oder sehe ich da was falsch?

Gruß
meinereiner
 
Hallo,

Danke für den Tipp.

Jetzt bekomme ich allerdings folgende Fehlermeldung "Given final block not properly padded".

Verstehe ich aber irgendwie nicht, da ich nichts anderes von meiner anderen Applikation bekomme.

Hast du eine Idee an was das liegen kann?

Gruß
meinereiner
 
Hi,

Google meint dazu:
1) You converted the encrypted data to a String using something like
String encryptedAsString = new String(encryptedAsByte);
which , depending on the default chaaracter encoding, may not be reversible.

2) Your decryption key is not the key used to encrypt.

3) Your decryption IV is not the IV used to encrypt.

Grüße,
Peter
 

Neue Beiträge

Zurück