Hallo,
ich habe ein externes Programm, dass über einen Algorithmus einen 32-Zeichen langen String erzeugt und damit Dateien mit einem bitwise xor verschlüsselt.
Das programm ist in C geschrieben.
Meine Aufgabe ist es nun, in Java ein Programm zu schreiben, dass diese Dateien wieder entschlüsselt...
Soweit, sogut.
Ich habe in meinem Programm den gleichen Algorithmus geschrieben, der auch in C den Schlüssel erzeugt, lese die verschlüßelte Datei blockweise ein, durchlaufe das erhaltene byte-Array und verknüpfe jedes Zeichen per XOR mit dem zugehörigen Zeichen aus dem Schlüssel.
das funktioniert auch soweit, solang mein Schlüssel keine besonderen Zeichen enthält.
erzeuge ich in C/Java allerdings einen komplexeren Schlüssel, kann mir java meine Dateien nicht mehr entschlüsseln.
die erzeugten Zahlen stimmen überein; sobald ich in java ein
mache, erhalte ich nicht immer die selben Zeichen, die ich in c mit dem gleichen befehl erhalte.
Während mein c-kompliertes Programm in der Kommandozeile nette Sonderzeichen wie Smileys oder mathematische Symbole im Key anzeigt, stellt mein Java einen großteil der Sonderzeichen nur als Fragezeichen da.
Jetzt hab ich mir gedacht, vielleicht läuft die JVM unter einem anderen Charset wie windows ...
kann das sein? Wie könnte ich da draufkommen?
Woran könnte es sonst liegen?
(Wie gesagt: die int-Werte sind noch die gleichen; d.h. mein Algorithmus ist gleich!)
mfg, guni
ich habe ein externes Programm, dass über einen Algorithmus einen 32-Zeichen langen String erzeugt und damit Dateien mit einem bitwise xor verschlüsselt.
Das programm ist in C geschrieben.
Meine Aufgabe ist es nun, in Java ein Programm zu schreiben, dass diese Dateien wieder entschlüsselt...
Soweit, sogut.
Ich habe in meinem Programm den gleichen Algorithmus geschrieben, der auch in C den Schlüssel erzeugt, lese die verschlüßelte Datei blockweise ein, durchlaufe das erhaltene byte-Array und verknüpfe jedes Zeichen per XOR mit dem zugehörigen Zeichen aus dem Schlüssel.
das funktioniert auch soweit, solang mein Schlüssel keine besonderen Zeichen enthält.
erzeuge ich in C/Java allerdings einen komplexeren Schlüssel, kann mir java meine Dateien nicht mehr entschlüsseln.
die erzeugten Zahlen stimmen überein; sobald ich in java ein
Java:
(char)pwdint
Während mein c-kompliertes Programm in der Kommandozeile nette Sonderzeichen wie Smileys oder mathematische Symbole im Key anzeigt, stellt mein Java einen großteil der Sonderzeichen nur als Fragezeichen da.
Jetzt hab ich mir gedacht, vielleicht läuft die JVM unter einem anderen Charset wie windows ...
kann das sein? Wie könnte ich da draufkommen?
Woran könnte es sonst liegen?
(Wie gesagt: die int-Werte sind noch die gleichen; d.h. mein Algorithmus ist gleich!)
mfg, guni