Crypto - Verschlüsseln mit Private-/Public-Keys

Habe folgendes Problem, ich möchte Daten verschlüsseln mit Hilfe von PrivateKeys und PublicKeys.Laut diversen Beispielseiten, soll das so gehen:

import java.security.*;
import java.util.*;
import javax.crypto.*;
import javax.crypto.spec.*;
import javax.crypto.SecretKeyFactory;
import java.security.spec.*;

public class CryptObject {
private SecretKey key;
private KeyGenerator kg;
private Cipher cipher;
private PublicKey publicKey = null;
private PrivateKey privateKey = null;

/** encrypting text */
public String encrypt(String text){
try
{
this.cipher.init(Cipher.ENCRYPT_MODE,this.publicKey);
byte[] ciphertext = this.cipher.doFinal(text.getBytes());
return new String(ciphertext);
} catch (Exception x) {
System.out.println(„Methode: encrypt\nHier gehen ganz, ganz andere Dinge vor\n“+x.toString());
return null;
}
}

/** encrypting text */
public String decrypt(String text){
try
{
this.cipher.init(Cipher.DECRYPT_MODE,this.privateKey);
byte[] decryptedMessage = this.cipher.doFinal(text.getBytes());
return new String(decryptedMessage);
} catch (Exception x) {
System.out.println(„Methode: decrypt\nHier gehen ganz, ganz andere Dinge vor\n“+x.toString());
return null;
}
}

public CryptObject() {
try {
Provider sunJCE = new com.sun.crypto.provider.SunJCE ();
Security.addProvider (sunJCE);
KeyPairGenerator KeyGen = KeyPairGenerator.getInstance („DH“, „SunJCE“);
KeyGen.initialize(1024);
KeyPair keypair = KeyGen.genKeyPair();
this.privateKey = keypair.getPrivate();
this.publicKey = keypair.getPublic();
}catch (NoSuchAlgorithmException nsae) {System.out.println(„Methode: CryptObject\nDer Provider kann diesen Algorithmus nicht bereitstellen\n“+nsae.toString());
}catch (Exception x) {System.out.println(„Methode: CryptObject\nHier gehen ganz, ganz andere Dinge vor\n“+x.toString());}

String tmp1 = encrypt(„Hallo Welt“);
System.out.println(tmp1);
String tmp2 = decrypt(tmp1);
System.out.println(tmp2);

}

/**
* @param args the command line arguments
*/
public static void main(String[] args) {
new CryptObject();
}

}

Ich bekomme jedoch immer diesen Fehler:

Methode: encrypt
Hier gehen ganz, ganz andere Dinge vor
java.security.InvalidKeyException: Invalid key length: 425 bytes
null

Methode: decrypt
Hier gehen ganz, ganz andere Dinge vor
java.security.InvalidKeyException: Invalid key length: 427 bytes
null

Kann mir vielleicht jemand helfen?

Vielen Dank

Hi Stefan,

der Fehler ist zunächst mal das in der Zeile

this.cipher.init(Cipher.ENCRYPT\_MODE,this.publicKey);

this.cipher NULL ist.

Wenn ich das initialisiere bekomme ich andere Fehler, das liegt allerdings an der falschen initialisierung der Objekte, aber welche Algorithmen etc. man da verwenden kann/muß weiss ich auch nicht so genau.

gruß
Heavy

P.S.:

catch(Exception e)
{
 e.printStackTrace();
}

gibt etwas aussagekräftigere Fehlermeldungen aus.