# Probleme mit Cipher: java.security.InvalidKeyException



## milanwb (13. Aug 2006)

Hallo,

ich arbeite momentan an einem Chatsystem. Die Daten sollen natürlich nicht unverschlüsselt versendet werden.

Auf grund dessen hab ich mich nach Verschlüsselungsmethoden umgeschaut und Cipher gefunden. Nach einem Beitrag im Forum kam ich auf folgendes Ergebnis:



```
public String encrypt (String action) {
        try {
        
        Cipher cipher = Cipher.getInstance("DES/CBC/PKCS5Padding");
        //cipher.init(Cipher.DECRYPT_MODE, new SecretKeySpec("12345678".getBytes(), "DES"));
        cipher.init(Cipher.ENCRYPT_MODE, new SecretKeySpec("12345678".getBytes(), "DES"));
        String neu = new String(cipher.doFinal( (action).getBytes() ));
        
        return neu;
        
        } catch (Exception e) {
            error("Error on Encrypt: " + e);
            return "failed";
        }
        
    }
    
    public String decrypt (String action) {
         try {
        
        Cipher cipher = Cipher.getInstance("DES/CBC/PKCS5Padding");
        cipher.init(Cipher.DECRYPT_MODE, new SecretKeySpec("12345678".getBytes(), "DES"));
        //cipher.init(Cipher.ENCRYPT_MODE, new SecretKeySpec("AZBXCYDW".getBytes(), "DES"));
        String neu = new String(cipher.doFinal( (action).getBytes() ));
        
        return neu;
        
        } catch (Exception e) {
            error("Error on Decrypt: " + e);
            return "failed";
        }
        
    }
```

Die encrypt Klasse funktioniert einwandfrei und der verschlüsselte Code wird auch zum Client übertragen. Versucht mein Client nun die decrypt Klasse auszuführen kommt folgender Fehler:

"java.security.InvalidKeyException: Parameters missing"

Habe nun schon im Forum und bei google gesucht, allerdings finde ich nicht wirklich etwas...

Danke für die schnelle Hilfe!

Michael


----------



## milanwb (13. Aug 2006)

Habs inzwischen gefunden. Man benötigt einen Vector iv der folgender Maßen eingebunden wird:

byte[] ivBytes = key.getEncoded();
iv = new IvParameterSpec(ivBytes);
.
.
.
cipher.init(Cipher.ENCRYPT_MODE, key, iv);

Dieser muss immer beim Encoden und Decode der gleiche sein.

Nun funktioniert es!


----------

