最近在做一个项目,需要用到非对称加密,但是出现一个很诡异的情况,本地开发环境是Windows环境,测试环境是Linux环境,出现一个问题, 那就是本地环境与开发环境同一个私钥字符串加密加密同一个信息,得到的加密结果不一样。经过查询网络得知,这是由于填充的规则不同导致。最后问题定位到src.getBytes()代码,因我方工程使用GBK编码,src.getBytes()执行时获取默认编码为GBK,而客户方工程使用UTF-8编码,解密执行src.getBytes()时获取默认编码为UTF-8。造成解密校验失败。解决方法:加密时设置UTF-8编码格式―src.getBytes("UTF-8",如下:测试(file的默认编码为GBK):

解决JAVA非对称加密不同系统加密结果不一致的问题

解决JAVA非对称加密不同系统加密结果不一致的问题

解决JAVA非对称加密不同系统加密结果不一致的问题