一、必須找一個在Android和JDK上通用的加密算法,後面發現了http://www.cnblogs.com/hjtdlx/p/3926141.html這篇文章,試了一下,是能夠用的。 html
二、Android和Server端的傳輸採用JSON格式,除了加密還要校驗是否被修改。傳輸格式: java
{params:xxx,sign:xxx}
加密的相關代碼 算法
/** * 加密處理 * @param data json數據 * @return * @throws Exception */ private String encodeSign(String data) throws Exception{ JSONObject jsonObject = new JSONObject(); jsonObject.put("params", Des3.encode(data)); jsonObject.put("sign",MD5Util.encryptPassword(data)); return data = jsonObject.toJSONString(); }
private JSONObject decodeSign(JSONObject result){ try { String params = Des3.decode(result.getString("params")); String sign = result.getString("sign"); if(sign.equals(MD5Util.encryptPassword(params))){ result = JSONObject.parseObject(params); }else{ throw new RuntimeException("validate sign fail"); } } catch (Exception e) { e.printStackTrace(); } return result; }三、開發的時候發現MD5的加密產生的結果不一致,後面發現MD5加密的方法中String.getBytes()沒有指定字符集編碼,Android和Server端的編碼格式不同致使。