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

Mit*_*tch 15 java string encoding bytearray

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

示例输出:

SENT: WzShnf/fOV3NZO2nqnOXZbM1lNwVpcq3qxmXiiv6M5xqC1A3
SENT STR: [B@3e4a9a7d
RECEIVED STR: [B@3e4a9a7d
RECEIVED: W0JAM2U0YTlhN2Q=
Run Code Online (Sandbox Code Playgroud)

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

谢谢

Paŭ*_*ann 16

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

return "[B@" + Integer.toString(this.hashCode(), 16);
Run Code Online (Sandbox Code Playgroud)

(实际上它继承了Object的定义,而@简单的部分就是它的结果getClass().getName().)

而hashCode在这里并不依赖于内容.

而是使用新的String(数组,编码).

当然,这只适用于字节数组,它实际上可以表示为Java字符串(然后包含可读字符),而不是任意数组.最好使用像Bozho推荐的base64(但一定要在频道的两侧使用它).


Boz*_*zho 5

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

  • @Mitch不使用`sun.*`包中的任何类.它们是专有API,可以随时删除.使用任何其他公共实现,如Bozho建议的那样. (2认同)