Android与Server端的传输加密

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端的编码格式不一样导致。

时间: 2024-08-29 11:39:03

Android与Server端的传输加密的相关文章

Base64实现android端图片上传到server端

首先要下载Base64.java文件http://iharder.sourceforge.net/current/java/base64/ 将代码复制到project中. 然后上代码: android端代码: private void setPicToView(Intent picdata) { Bundle extras = picdata.getExtras(); if (extras != null) { mBitmap = extras.getParcelable("data"

Android开发socket通信——手机做server端C/S架构实现

每一部智能手机都是一部微型电脑,在学校里最喜欢的就是找上十个八个同学一起局域网内开几局dota,突然想到,拿手机C一个游戏来玩怎样,不用连wifi.不用开数据,几部手机选一个做主机,其他手机连上它的热点,便可以互动起来游戏搞起来了,多开心~~ 实际实现过程中发现拿手机本身做server的手段还真是很少有人使用,网上也很少有现成的解决方案,经过一番摸索,简单实现了手机自身做server(可兼做客户端)的socket通信功能,写出来请大家指导一下,也是简单梳理一下方便日后复用. 遇到的最大问题可能是

【Android工具类】怎样保证Android与server的DES加密保持一致

转载请注明出处:http://blog.csdn.net/zhaokaiqiang1992 在我们的应用程序涉及到比較敏感的数据的时候,我们一般会对数据进行简单的加密.在与server之间的数据交互中,除了能够使用post请求来增强数据的安全性之外.我们能够使用常见的加密算法.对数据进行加密. 今天主要介绍的是DES加密算法. 首先.DES属于一种对称的加密算法,所谓对称.就是说加密和解密使用的都是同一个密钥,那么在我们实际应用的时候,就是指server和client进行加密解密的时候.使用的是

Android实战简易教程-第六十六枪(server端搭建和server端Json数据交互)

学习Android有一段时间了.对server端有非常深的好奇,决定对server端的实现进行一些研究,这里实现了一个简单的小样例,用于获取server端的json数据,样例非常easy,适合刚開始学习的人学习使用. server端 首先我们搭建server端,server端使用struct2架构,对该架构不熟悉的人能够花一点时间看看慕课网上的相关视频,这里用myeclipse实现server端. 新建一个webproject.这里要引入struct2相关,方法是:点击新建的webproject

android客户端和java服务端用aes加密

最近在公司做一个项目,老大让我们实现加解密的方法,我把工作直接推给了java服务端,他们也是直接在网上copy的代码,说我直接放到我的android代码中就可以了,不需要太多的更改.我就照做了,但是在真正的测试的时候,发现两边输入的密码一致,但是加密结果不一致.这可折磨我们了好久,最终解决了这个问题,加以记录. android和java加密结果不一样的原因,是因为他们的默认随机数序列不一致,所以解决他的办法是,不要使用默认的创建方法. 以下是正确的代码.android和java端的代码是一致的.

Android和C#实现实时视频传输Demo

上次说到的那个Demo,趁着今天有空整理一下. 原理很简单,虽然没有写过android应用,但是,嘛~ 高级语言都是相通的,自傲一下.所以简单研究了一下api后,发现相机对象有预览回调方法, 实现一下Camera.PreviewCallback接口,就可以得到一个每一帧画面的回调事件,那么思路就很简单了. 拿到画面后,进行下简单的压缩,然后把图像用Socket传输到服务器上,服务器上绑定到一个窗口的picBox上就可以了. 当然,这里还牵扯到多线程的问题,因为一个SocketServer可以实现

Drcom账户管理Server端解说

https://www.github.com/xiyouMc 首先今天要讲的是针对Drcom查询账户URL的解析和抓取数据.    Drcom是大学生宿舍上网普遍使用的联网client,然而对于自己账号的信息查询和改动password等都没有提供一个合理的方式去解决,因此小弟尝试去编写实现移动端的 app以方便大学生针对自己drcom账户的管理. 架构由来和设计 刚開始我是想直接基于某公司开发的b/s架构去实现client,然而当我去了解该B/S架构的时候才发现去实现C和B/S的架构不合理.为什

cocos2d-x 2.1 Win32+Android开发中的sqlite数据库加密技术探讨

注意:本博客转移自本人约一年前的ITPUB博客文章,为的是便于学员参考之用. 很显然,cocos2d-x编程中只了解基本的sqlite数据库操作技术只是一个开头,真正把此数据库数据应用于实际中不使用一定的加密及解密技术几乎是不行的. 这个问题尽早会来到我面前,这不?现在就来了.一开始,自然想使用最省工的了:但是,这样的好事并不多,极少极少...... 于是,我先搜罗了一些现成的文章拿来一阅. 1,Sqlite数据库加密解密 SRC: http://blog.sina.com.cn/s/blog_

OSChina客户端源码学习(1)--Android与Server的交互

这里主要针对"综合"这个选项卡下的"资讯"模块为例子,对核心代码进行解读. 准备工作:参考我的另外一篇博客 http://blog.csdn.net/csp277/article/details/46610893 然后点击下面的类 Class AsyncHttpResponseHandler 第一步:定义AsyncHttpResponseHandler,该handler对象将作为Http请求的参数 protected AsyncHttpResponseHandler