Was ist der einfachste Weg in Java, Null-Padding am Ende einer Zeichenfolge hinzuzufügen? Dies ist ein Vorschritt in einem Verschlüsselungsprozess, daher muss die resultierende Zeichenfolge ein Vielfaches von 16 Byte sein.Java: Pad einen String mit ASCII 0 (NULL) auf ein Vielfaches von 16 Bytes
Der erste Versuch bestand nur darin, String 1 mit einer Zeichenfolge zu füllen, die null enthält. Aber das funktioniert nicht, weil null zum Wort 'null' wird.
Zweiter Versuch: Konvertieren Sie die Zeichenfolge in Bytes, und fügen Sie irgendwie Null Bytes an, aber ich war nicht in der Lage, eine Möglichkeit zu finden, das zu arbeiten.
Dritter Versuch: Initialisieren Sie ein Byte-Array einer bekannten großen Größe wie 128 minus die Länge der Bytes in meiner Zeichenfolge, dann konvertieren Sie meine Zeichenfolge in Bytes kopieren Sie die beiden Arrays zusammen. So etwas wie:
String stringToEncrypt = "some data" ;
byte[] stringToEncryptBytes = stringToEncrypt.getBytes("UTF-8");
int stringToEncryptByteLength = stringToEncryptBytes.length;
int sizeOfNullArray = 128 - stringToEncryptByteLength;
byte[] byteBlockOfNulls = new byte[sizeOfNullArray] ;
byte[] finalBytes = new byte[stringToEncryptByteLength + sizeOfNullArray];
System.arraycopy(stringToEncryptBytes, 0, finalBytes, 0, stringToEncryptByteLength);
System.arraycopy(byteBlockOfNulls, 0, finalBytes, stringToEncryptByteLength, sizeOfNullArray);
Aber wenn ich das Byte-Array wieder in eine Zeichenfolge konvertieren, wird es nur verstümmelt. Also muss ich etwas falsch gemacht haben.
Hmm, ich verwendet toString() vor dem hat nicht funktioniert. Jetzt, da ich die Bytes wieder korrekt in einen String umgewandelt habe, indem ich den String finalString = new String (finalBytes, "UTF-8") verwende, kann ich die richtige Zeichenfolge sehen. Ich bin jedoch immer noch neugierig, ob mein dritter Versuch der beste/einfachste Weg ist, einen String mit Nullen auf eine bestimmte Größe zu puffern. –