我有一个字节数组,我正在对其进行加密,然后将其转换为字符串以便进行传输。当我收到字符串时,我必须将字符串转换回字节数组,以便对其进行解密。我已检查接收到的字符串是否与发送的字符串(包括长度)匹配,但是当我使用类似 str.getBytes() 的方法将其转换为字节数组时,它与我的原始字节数组不匹配。
示例输出:
SENT: WzShnf/fOV3NZO2nqnOXZbM1lNwVpcq3qxmXiiv6M5xqC1A3
SENT STR: [B@3e4a9a7d
RECEIVED STR: [B@3e4a9a7d
RECEIVED: W0JAM2U0YTlhN2Q=
有什么想法可以将接收到的字符串转换为与发送的字节数组匹配的字节数组吗?
谢谢
最佳答案
你使用了array.toString()
,它是这样实现的:
return "[B@" + Integer.toString(this.hashCode(), 16);
(实际上它继承了Object的定义,@
之前的部分只是getClass().getName()
的结果。)
而且这里的hashCode不依赖于内容。
相反,使用 new String(array, encoding)。
当然,这仅适用于真正可表示为 Java 字符串(然后包含可读字符)的字节数组,不适用于任意数组。最好像 Bozho 推荐的那样使用 base64(但请确保在 channel 的两侧都使用它)。
关于java - 将 Java 字符串转换为字节数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5499924/