当我尝试使用Netbeans运行java代码时,一切都很好,RC2加密代码给出了
5B\q\OI5c¸ä3î1Ü
。但是从Windows运行编译的jar文件,输出是不同的5B?\q\O?I5cä3???1Ü?
。如果我从linux运行相同的jar文件,问题就解决了。
答案 0 :(得分:1)
几乎可以肯定,控制台在每种情况下处理非ASCII字符的方式。然而,这是你做一些你不应该开始的事情的必然结果:当你不应该这样做时,或者至少以你不应该这样做的方式将任意byte[]
转换为String
,例如new String(byte[])
。即使指定一个Charset
(在文本和该文本的二进制表示之间进行转换时,你应该总是这样做)在这里也无济于事。
加密的结果是不是编码的文本 - 它只是字节。理想情况下,您应该将其保留为byte[]
- 毕竟它只是二进制数据。如果您做需要将其转换为文本,您应该使用hex或base64这样做,因为这样您将获得一个ASCII表示,总是可逆回到你原来的二进制数据。
对于base64,您可能需要考虑使用good public domain library。