Schwierigkeiten bei der Byte-Array-Konvertierung in String und bei der Rückkonvertierung
Frage:
Warum funktioniert das Das nach der Rückkonvertierung einer Zeichenfolge aus einem Byte-Array erhaltene Byte-Array weicht vom ursprünglichen Byte-Array ab, was zu einer Entschlüsselung führt Fehler?
Lösung:
Das Kodieren verschlüsselter Daten als Zeichenfolgen kann aufgrund der Art der Zeichenfolgenkodierungen problematisch sein. Für Binärdaten wird die Verwendung von Byte-Arrays empfohlen. Wenn jedoch eine Zeichenfolgenspeicherung erforderlich ist, muss eine Kodierung mit einer Eins-zu-Eins-Zuordnung zwischen Bytes und Zeichen ausgewählt werden, z. B. ISO-8859-1. Die Verwendung von Kodierungen wie UTF-16 kann aufgrund hinzugefügter Bytereihenfolgemarkierungen und der Möglichkeit mehrdeutiger Zeichenzuordnungen zu Datenverlusten führen.
Betrachten Sie das folgende Beispiel:
String decoded = new String(encryptedByteArray, "ISO-8859-1"); byte[] encoded = decoded.getBytes("ISO-8859-1");
Verwendung von ISO-8859 -1 behält das ursprüngliche Byte-Array bei und gewährleistet so eine korrekte Entschlüsselung.
UTF-16 schlägt fällig fehl zu:
Das obige ist der detaillierte Inhalt vonWarum führt die Konvertierung eines Byte-Arrays in einen String und zurück zu Datenverlust während der Entschlüsselung?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!