将 Java 字符串转换为字节数组

2022-09-03 05:41:05

我有一个字节数组,我正在加密,然后转换为字符串,以便可以传输它。当我收到字符串时,我必须将字符串转换回字节数组,以便可以对其进行解密。我已经检查了接收的字符串是否与发送的字符串(包括长度)匹配,但是当我使用str.getBytes()之类的东西将其转换为字节数组时,它与我的原始字节数组不匹配。

示例输出:

SENT: WzShnf/fOV3NZO2nqnOXZbM1lNwVpcq3qxmXiiv6M5xqC1A3
SENT STR: [B@3e4a9a7d
RECEIVED STR: [B@3e4a9a7d
RECEIVED: W0JAM2U0YTlhN2Q=

任何想法如何将接收到的字符串转换为与发送的字节数组匹配的字节数组?

谢谢


答案 1

您使用了 ,其实现方式如下:array.toString()

return "[B@" + Integer.toString(this.hashCode(), 16);

(实际上,它继承了 Object 的定义,而 simply 之前的部分是 的结果。@getClass().getName()

这里的哈希码不依赖于内容。

相反,请使用新的字符串(数组,编码)。

当然,这仅适用于真正可表示为Java字符串(然后包含可读字符)的字节数组,而不适用于任意数组。最好像 Bozho 推荐的那样使用 base64(但请确保在通道的两侧使用它)。


答案 2

这看起来像Base64。看看 commons-codec 类。Base64