由于jvm编码方式未指定导致解密失败

在一个项目中遇到了一个奇怪的现象,对于一个加密字符串,在Linux环境中通过Tomcat启动能够解密成功,在Windows环境中,如果通过Eclipse启动项目就可以解密成功,通过Tomcat直接启动项目就解密失败。

在Linux环境中,采用rsa算法加密的信息,在Linux环境中,可以成功解密验证。

在Windows环境中,如果通过Eclipse启动项目就可以解密成功,直接启动Tomcat就无法解密成功。

查找问题的方法首先通过调用堆栈的方式,确认了两个环境中所调用的方法对应的Jar包以及代码位置是完全一样的,确认了没有因为Jar包不一致而导致的错误。
通过jdk中自带的工具jconsole.exe(jvisualvm.exe)分别连接到解密成功的实例和解密失败的实例,对比jvm运行环境和参数。

原因是:Windows环境下,默认编码为GBK,通过Eclipse启动项目时,参数中设置了JVM编码,通过Tomcat启动时,没有指定编码类型,导致解密验证失败。

猜你喜欢

转载自blog.csdn.net/liaomingwu/article/details/85338541