Probleme bei RSA mit byte[] bei Versand über RMI

java314

Mitglied
Hallo zusammen,

schreibe eine Art Chat-Umgebung, bei der Nachrichten von angemeldeten Benutzern auf einem RMI-Server abgelegt und wieder abgefragt werden können. Diese Nachrichten werden als byte[] in einem Vector gepeichert, damit man später auch die Cipher-Maschine von Sun darauf loslassen kann.

Das Senden und Empfangen unverschlüsselter Nachrichten geht.
Das Ver- und Entschlüsseln macht Probleme. Hier mein Entschlüsselungs-Quelltext:
Java:
Cipher cipher = Cipher.getInstance("RSA");
cipher.init(Cipher.DECRYPT_MODE, kp.getPrivate());
klartextbytes = cipher.doFinal(geheimtextbytes);

geheimtextbytes und klartextbytes sind vom Typ byte[]. Der RMI-Server (bzw. das zugehörige Interface) hat Methoden:

Java:
public void sendMessage(String name, byte[] msg) throws RemoteException;
public byte[] getNextMessage(String name) throws RemoteException;

Nun der Fehler: beim Entschlüsseln des vom RMI-Server gelieferten arrays geheimtextbytes kommt die Meldung:
javax.crypto.BadPaddingException: Data must start with zero

Da alles läuft, wenn ich lokal meine bytes[] bearbeite, denke ich in die Richtung, dass beim Senden oder Empfangen über RMI irgendetwas mit meinen bytes[] geschieht, von dem ich (wie von so vielem) keine Ahnung habe.

Wer kann helfen?

Ich danke schon einmal im voraus.
 
hast du schon mal versucht, dir die bytes vor und nach dem Senden anzuschauen?
ist z.B. die Quersumme gleich?
 
Hallo SlaterB,

habe mal die Quersummen ausgeben lassen: sie waren völlig verschieden.
Habe auch den Fehler gefunden: nach dem Verschlüsseln habe ich den Geheimtext in eine TextArea geschrieben, später dort herausgeholt und dann versendet. Dabei werden v. a. nicht druckbare Zeichen anders dargestellt (z. B. durch Fragezeichen), und dann nimmt das Unglück seinen Lauf.
Meine Lösung: geheimtextbytes immer gut in einer Variablen speichern und deren Inhalt senden.

Danke für den Tipp. Hat mich nämlich auf die rechte Spur gebracht.

Gruß,
java314
 

Zurück
Oben