TCP通讯,我把接收到的数据进行AES解密,报错:Input length must be multiple of 16 when decrypting with padded cipher 在网上搜的错误原因说是这主要是因为加密后的byte数组是不能强制转换成字符串的
求解决办法。

解决方案 »

  1.   

    InputStream.read(data);//得到传过来的数据,字节类型
    String str = ConvertUtil.byte2String(packData)//将字节类型(加密过的)转换为String型
    AES.Decrypt(str, key)//解密   key为密钥
    关键步骤就是这些,大牛们,求解决办法啊
      

  2.   

    第一个是看看 AES 这个类,是否提供直接针对 byte[] 数组的解密。第二个是String str = ConvertUtil.byte2String(packData)这句话,可能需要用可以将 byte[] 转为BASE64字符串的函数来处理,而不是直接把byte[]数组强转为字符串。
      

  3.   

     ConvertUtil.byte2String(packData)
    ======================================
    你这个做了什么,是你自己写的类,还是javax的东西
      

  4.   

    ConvertUtil.byte2String(packData)//自己写的类  将byte[]数组转换成string
    我的AES加密都是对应的String加密,所以我才转换成String
    -----------------------------------------------------
    ”将 byte[] 转为BASE64字符串的函数来处理“
    怎么来处理啊
      

  5.   

    可以用Apache的Common包来做,参见:
      http://commons.apache.org/codec/apidocs/org/apache/commons/codec/binary/Base64.html