码迷,mamicode.com
首页 > 移动开发 > 详细

Android与Server端的传输加密

时间:2015-09-07 15:41:56      阅读:190      评论:0      收藏:0      [点我收藏+]

标签:

1、必须找一个在Android和JDK上通用的加密算法,后面发现了http://www.cnblogs.com/hjtdlx/p/3926141.html这篇文章,试了一下,是可以用的。

2、Android和Server端的传输采用JSON格式,除了加密还要校验是否被修改。传输格式:

{params:xxx,sign:xxx}



其中,params为经过DES3加密的json数据,sign为原json数据md5值。这样,在收到数据后先进行DES解密,然后将解密后的json数据进行MD5,和传过来的sign比对就可以知道是不是原数据。

加密的相关代码

/**
	 * 加密处理
	 * @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;
}



3、开发的时候发现MD5的加密产生的结果不一致,后面发现MD5加密的方法中String.getBytes()没有指定字符集编码,Android和Server端的编码格式不一样导致。

Android与Server端的传输加密

标签:

原文地址:http://my.oschina.net/lfy2008/blog/502323

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!