Heim >Java >javaLernprogramm >Wie vermeide ich Konvertierungsprobleme beim Verschlüsseln von Daten zwischen Byte-Arrays und Strings?
Im Zusammenhang mit der Verschlüsselung kann die Konvertierung von Byte-Arrays in Strings und zurück eine Herausforderung darstellen, die häufig zu nicht übereinstimmenden Werten führt und Entschlüsselungsfehler. Hier finden Sie eine Untersuchung dieser Probleme und eine detaillierte Lösung.
Stellen Sie sich das folgende Verschlüsselungsszenario vor:
public class NewEncrypter { // Encryption and decryption are performed on byte arrays, not strings public byte[] encrypt(String input) throws Exception { cipher.init(Cipher.ENCRYPT_MODE, key); return cipher.doFinal(input.getBytes("UTF-16")); } public String decrypt(byte[] encryptionBytes) throws Exception { cipher.init(Cipher.DECRYPT_MODE, key); return new String(cipher.doFinal(encryptionBytes), "UTF-16"); } }
Von der Speicherung verschlüsselter Daten als Zeichenfolgen wird jedoch aufgrund ihrer beabsichtigten Verwendung für die Lesbarkeit durch Menschen abgeraten Text, keine willkürlichen Binärdaten. Wenn es unvermeidbar ist, ist die Verwendung einer Kodierung mit einer 1-zu-1-Zuordnung zwischen Bytes und Zeichen von entscheidender Bedeutung.
ISO-8859-1-Kodierung
Für dieses spezielle Szenario , die ISO-8859-1-Kodierung wird empfohlen:
String decoded = new String(encryptedByteArray, "ISO-8859-1"); byte[] encoded = decoded.getBytes("ISO-8859-1");
Common vermeiden Fehler bei der Kodierung
UTF-16-Kodierung kann Probleme verursachen, weil:
Alternative Kodierungen
Wenn ISO-8859-1 Ihre Anforderungen nicht erfüllt, sollten Sie die Verwendung von Hexadezimal- oder Base64-Kodierung in Betracht ziehen. Diese erfordern jedoch zusätzliche Hilfsbibliotheken, da sie nicht in der Standard-API definiert sind.
Durch die Einhaltung dieser Richtlinien und die Verwendung einer geeigneten Kodierung können Sie die Diskrepanzen zwischen Byte-Arrays und Strings in Ihrem Verschlüsselungsprozess beheben.
Das obige ist der detaillierte Inhalt vonWie vermeide ich Konvertierungsprobleme beim Verschlüsseln von Daten zwischen Byte-Arrays und Strings?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!