Java RSA3加密时因编码不同导致结果不同

来源:互联网 发布:芜湖网络推广公司 编辑:程序博客网 时间:2024/05/23 14:17
最近遇到一个问题,使用RSA3加密及验证时候,因为我方与客户方工程的编码格式不同,导致我方使用私钥加密后,客户使用公钥解密失败。
最后问题定位到src.getBytes()代码,因我方工程使用GBK编码,src.getBytes()执行时获取默认编码为GBK(即src.getBytes("GBK")),而客户方工程使用UTF-8编码,解密执行src.getBytes()时获取默认编码为UTF-8(即src.getBytes("UTF-8"))。造成解密校验失败。
解决方法:加密时设置UTF-8编码格式—src.getBytes("UTF-8",如下:

测试(file的默认编码为GBK):

valueT.getBytes():
[48, 50, 48, 49, -49, -62, -75, -91, -77, -55, -71, -90, -93, -84, -74, -87, -75, -91, -76, -90, -45, -38, -77, -28, -42, -75, -42, -48, 50, 48, 49, 55, 48, 56, 48, 49, 49, 49, 49, 50, 48, 53, 56, 56, 51, 51, 48, 48, 54, 55, 54, 52, 55, 85, 78, 68, 69, 82, 87, 65, 89, 50, 48, 49, 55, 45, 48, 56, 45, 48, 49, 32, 49, 49, 58, 49, 50, 58, 48, 54]
valueT.getBytes("GBK"):
[48, 50, 48, 49,-49, -62, -75, -91, -77, -55, -71, -90, -93, -84, -74, -87, -75, -91, -76, -90, -45, -38, -77, -28, -42, -75, -42, -48, 50, 48, 49, 55, 48, 56, 48, 49, 49, 49, 49, 50, 48, 53, 56, 56, 51, 51, 48, 48, 54, 55, 54, 52, 55, 85, 78, 68, 69, 82, 87, 65, 89, 50, 48, 49, 55, 45, 48, 56, 45, 48, 49, 32, 49, 49, 58, 49, 50, 58, 48, 54]
valueT.getBytes("UTF-8"):
[48, 50, 48, 49,-28, -72, -117, -27, -115, -107, -26, -120, -112, -27, -118, -97, -17, -68, -116, -24, -82, -94, -27, -115, -107, -27, -92, -124, -28, -70, -114, -27, -123, -123, -27, -128, -68, -28, -72, -83, 50, 48, 49, 55, 48, 56, 48, 49, 49, 49, 49, 50, 48, 53, 56, 56, 51, 51, 48, 48, 54, 55, 54, 52, 55, 85, 78, 68, 69, 82, 87, 65, 89, 50, 48, 49, 55, 45, 48, 56, 45, 48, 49, 32, 49, 49, 58, 49, 50, 58, 48, 54]












阅读全文
0 0