fastjson 将 byte[]数组 转 json 的时候,会把byte[]转成base64字符串,所以在JSON转byte[]的时候需要使用base64解密!
几种可用的加解密处理
byte[] byte1 = new byte[] {1,2};
// 这种情况转换之后的byte数组 是一段base64字符串,而不是 [1,2]
String jar = JSONArray.toJSONString(byte1 );
// 需要用以下的办法转换
byte1 = com.alibaba.fastjson.JSONArray.parseObject(jar,byte[].class); //转json byte
byte1 = com.alibaba.fastjson.util.Base64.decodeFast(jar);
byte1 = jar.getBytes(Charset.forName("ISO8859-1"));//错误
byte1 = org.apache.commons.codec.binary.Base64.decodeBase64(jar);//正确
byte1 = java.util.Base64.getMimeDecoder().decode(jar); //正确
//以下两个方法执行结果一致 得出结论 byte[] 会转换成 base64 字符串
jar = org.apache.commons.codec.binary.Base64.encodeBase64String(secretKey);
jar = JSONArray.toJSONString(byte1);