安全可靠的3G传输中IP地址的解决方案
1.概述
采用3G网络做为传输方式时,会碰到服务器IP地址不可知的问题。如何解决这个问题,根据实际情况不同的公司或者个人会采取不同的方式。有中间服务器进行中转的方式,有采用绑定域名的方式(如绑定花生壳软件),有借用中间服务器保存服务器IP地址的方式等。各种不同的方式都各有优劣,这边我们提供一种节约成本、易扩展并且开发容易的解决方案。
基本原理图如下:
客户端需要将数据发送到服务器器端,但由于不知道服务器端的IP地址等信息,所以需要通过中间服务器获取目的服务器的IP地址等信息,其实际传输与中间服务器无关。
由于在中间服务器中保存了用户的IP地址等敏感信息,我们对用户提交的信息在提交前会做个简单的加密,也可以支持用户自定义的加密方式,并通过我们的程序进行二次加密,最大限度的保证用户数据的安全性。并且用户保存到服务器端的信息其格式和内容都有用户自己控制。
2.接口说明
提供两个主要的接口:注册用户信息和获取用户信息。在使用这两个接口之前,需要在www.91meican.com网站上注册用户。两个接口所使用的用户名密码即为91meican的登录的用户名密码。
具体格式如下:
/**
* 获取指定用户的IP信息,阻塞式
*@userName 用户名,其长度必须小于
*@password 用户密码
*@registerInfo 注册内容
*@infoLen 注册内容的长度
*@return 注册成功返回TRUE
* 否则返回FALSE
*@remark 该方法虽然是阻塞式的,但如果外部调能够中断它的执行,并且返回FALSE
*/
BOOL RegistUserInfo(char userName[20],char password[20],BYTE* registerInfo,int infoLen);
/**
* 请求用户信息
*@userName 用户名
*@password 用户密码
*@queryUserName 查询的用户名名
*@resultBuff 查询结果接收缓冲区
*@buffLen 缓冲区长度
*@return 查询成功返回获取的字节数
* 失败返回-1
*/
int QueryUserInfo(char userName[20],char password[20],char queryUserName[20] ,char* resultBuff,int buffLen);
其他接口请参考CRegistQueryUserInfo类的声明。
用户的操作过程如下:
如果用户加载动态库不成功调用其他接口,则不操作直接返回,不会有异常出现。
应用实例,我们后面会推出用该方法解决ftp上传的实例。
3.应用场合
注册信息最长512字节,超过则不予保存,返回错误。但这512字节是自由的,不受接口的限制,用户可以组织一些自定义的数据放在服务器上。服务器的作用可以看成是中转,注册用户信息与获取用户信息其实就是传输数据。可以使用在对传输速度没有要求,内容较少的场合下。
1) 传输3G IP信息,使得两端建立通信关系,例如ftp传输;
2) 多使用获取接口,偶尔使用注册接口,用于某些信息的定期更改;
我们特别实现了关于注册与获取接口的代码。请到 http://download.csdn.net/download/wjh_monkey/5097621 下载。
测试的用户名密码为:
用户名:wjh_2010@163.com
密 码:20130227
4.安全性
由于我们对用户数据的格式没有要求,只是要求数据量不能大于512字节,所以用户数据可以自己加密,将密文上传到中间服务器中,然后从中间服务器获取的密文自己解密。并且无论用户上传是数据是什么,我们都会进行一层加密。我们采取的加密方式用户不需关心。 有这样的机制,用户可以放心使用。因为加密之后即使用户数据丢失也不需要担心泄密。
关于加密算法,请关注我们的网站(www.91meican.com),我们后面会推出加密解密库。