最近折腾Java和IOS,现在在AES加密传输的时候遇到一个奇怪的问题,求大神指导····说明:java是服务器端 ios是客户端比如一段明文如下:
{
  "method" : "ISunRegister",
  "userName" : "你妹妹",
  "password" : "d4c101ce3f821ca17c18fe0a5adf3b75"
}加密后得到密文:
vTP3g3bU3HIyQLwVhZAn1eKHtCl4LSL2ePYEE5Eh0Q3efMKfnWOZx34giKSybtVc0cSdvHZz95q8mQeZh38DY2DZfJKYMLUBWHza6IBTOYPYN9kaWgX/pTB7OXm1KjTrazV3SrrOxbGnSq3ZR0K6vA==
奇怪的事情发生了,我在action中的main方法中直接使用这一段密文测试,去调用解密的方法,能得到正确的明文,但是我用ios网络访问后台的时候,在action中调用解密方法前,我打印密文,还是这一段密文(完全相同,一个字不差),但是解密的结果出来,英文字符正确,中文变乱码了·····为什么同一段密文,同一个方法,在两个不同的地方调用,我测试的时候都是正确的(在解密类的mian中我也使用这一段密文测试过,结果是完全正确的,中文无乱码),但是从网络接受过来的密文(打印是同一段密文,完全相同),解密出来中文(英文字符还是正确的)就变乱码了呢?JavaIOSAES256

解决方案 »

  1.   

    从网络收到的密文,解密后如下:
    {
      "method" : "ISunRegister",
      "userName" : "浣??濡?,
      "password" : "d4c101ce3f821ca17c18fe0a5adf3b75"
    }这个真郁闷了····
      

  2.   

    中文用于网络传输要先用 java.net.URLEncoder 的encode方法加密再调用你自己的加密方法。
    反过来,接收到密文的时候在调用自己的解密方法解密后需再调用 java.net.URLDecoder 解密,这样中文就正常了