Java string in bytearray zurück zu string
Ich habe eine client-und server-java-Anwendung, die Bedürfnisse der verschlüsselte text übergeben durch einander. Ich bin mit einer XOR-Verschlüsselung verschlüsseln Sie den text, den ich haben möchte.
Das problem ist, dass readline() nicht akzeptieren, string, wurde XORed und nur wenn er akzeptiert wird, wenn es in bytes.
Also habe ich umgewandelt mein Klartext (string) in ein byte-array auf der client-Seite, und versuchte, Sie zu konvertieren zurück zu einem string auf der server-Seite.
Leider das Ergebnis, ich bin auf der Suche nach noch jibberish und nicht den Klartext, dass ich seeked.
Weiß jemand, wie man bytearrays ändern zurück zu der ursprünglichen Zeichenfolge? Oder gibt es eine bessere Art und Weise zu senden, durch eine XOR-verschlüsselten text durch die readline () - Funktion?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nachdem Sie angewendet haben, so etwas wie XOR, Sie am Ende mit beliebiger Binär-Daten - nicht eine codierte Zeichenfolge.
Den herkömmlichen sicheren Weg, um zu konvertieren beliebiger Binär-in text-ist zu verwenden base64 - nicht versuchen Sie einfach erstellen Sie eine neue Zeichenfolge aus. Damit Ihr Prozess wäre so etwas wie dieses:
Dann, wenn Sie brauchen, um zu entschlüsseln...
new String(data, utf8Charset)
um wieder die ursprüngliche Zeichenfolge.Gibt es verschiedene Java base64-Bibliotheken zur Verfügung, wie diese Klasse in Apache-Commons-Codec. (Sie möchten der
encodeToString(byte[])
unddecode(String)
Methoden.)Antwort aus
http://www.mkyong.com/java/how-do-convert-byte-array-to-string-in-java/
1. aller, nicht anrufen XORing Verschlüsselung. Im ernst, der CipherOutputStream und CipherInputStream sind für Sie da, wenn Sie brauchen, um Ihre Daten zu schützen.
Dank für die stream-Verkettung, können Sie DataOutputStream -> CipherOutputStream -> ByteArrayOutputStream. Diese erhalten Sie ordnungsgemäß verschlüsselt bytes. Verwenden Sie die reverse-APIs auf das andere Ende und Sie erhalten den string zurück.