相同的Java代码从Netbeans和-JAR文件返回不同的结果



当我尝试使用Netbeans运行java代码时,一切都很好,RC2加密代码给出5BqOI5c¸ä3î1Ü。但是在windows上运行编译后的jar文件,输出是不同的5B?qO?I5cä3???1Ü?。如果我从linux运行相同的jar文件,问题就解决了。

这几乎肯定就是控制台在每种情况下处理非ascii字符的方式。然而,这是你做一些你不应该开始的事情的必然结果:当你不应该这样做时,将任意的byte[]转换为String,或者至少以一种你不应该的方式,例如new String(byte[])。即使指定Charset(在文本和该文本的二进制表示形式之间进行转换时,无论在哪个方向都应该这样做)在这里也没有帮助。

加密的结果是而不是编码的文本-它只是字节。理想情况下,您应该将其保留为byte[] -毕竟它只是二进制数据。如果需要将其转换为文本,则应该使用十六进制或base64,因为这样您将获得一个总是可逆的ASCII表示,以返回原始二进制数据。

对于base64,您可能会考虑使用一个很好的公共域库。

相关内容

  • 没有找到相关文章

最新更新