【发布时间】:2017-06-12 10:57:05
【问题描述】:
在 java 中将空填充添加到字符串末尾的最简单方法是什么?这是加密过程中的一个前置步骤,因此生成的字符串必须是 16 字节的倍数。
第一次尝试只是在字符串 1 中添加一个包含 null 的字符串。但这不起作用,因为 null 变成了“null”这个词。
第二次尝试: 将字符串转换为字节,并以某种方式附加空字节,但我无法想出一种方法来实现这一点。
第三次尝试: 初始化一个已知大大小的字节数组,例如 128 减去我的字符串中的字节长度,然后将我的字符串转换为字节,将两个数组复制在一起。所以像:
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);
但是当我将字节数组转换回字符串时,它只是乱码。所以我一定做错了什么。
【问题讨论】:
-
嗯,我用过 toString() 之前没有用。现在我使用 string finalString = new String(finalBytes, "UTF-8") 正确地将字节转换回字符串,我可以看到正确的字符串。但是,我仍然很好奇我的第三次尝试是否是将带有空值的字符串填充到特定大小的最佳/最简单方法。
标签: java encryption padding