设为首页 加入收藏

TOP

加密ArcGIS离线地图及其在Android上的实现
2014-11-24 11:52:52 来源: 作者: 【 】 浏览:0
Tags:加密 ArcGIS 地图 及其 Android 实现

目前,使用Compact格式的切片文件是离线地图的一个很好的方案,但是,如果我们可能会希望限制离线地图不被第三方程序使用;或者,希望限制离线地图只被经过授权的设备使用。在这样的需求下,我们必须保护好部署在智能设备上的离线地图数据,因此,需要对离线地图数据进行加密。


在这里,我使用了这样的一个思路,其中包含以下主要环节:


1. 经授权的设备序号+保密的标识符再经过MD5生成校验值。


2. MD5校验值与加密的离线数据一起分发,由于第三方程序无法得知保密的标识符,因此无法生成正确的校验值。


3. 离线数据的加密通过加密索引文件实现,加密通过字节交换实现,这样可以基本不影响性能。


4. 读取加密文件的算法封装在动态连接库中,确保第三方无法通过反编译手段获得算法。


下面详细叙述各个环节的实现。


TelephonyManager tm = (TelephonyManager) this


.getSystemService(Context.TELEPHONY_SERVICE);


String imei = tm.getDeviceId();


String imsi = tm.getSubscriberId();


deviceId = String.format("%s-%s", imei, imsi);


比如我这里得到一个设备标识“000000000000000-310260000000000”,下面根据不同情况,对上述的设备标识附加一个保密的标识符,再计算其MD5校验值:


String id = String.format("%s-%s", deviceId, "wuyf_qwert");


MessageDigest md = MessageDigest.getInstance("MD5");


byte[] bytes = md.digest(id.getBytes());


result = StringUtil.bytesToHexString(bytes);


这里的“wuyf_qwert”就是自己定义的保密标识符,这个保密标识符只有数据的发布者才知道,因此第三方无法通过设备标识符自行生成校验值。最后,可以将校验值保存在一个以设备序号命名的文件中,和数据一起发布(多个设备使用多个校验文件,增加删除都很方便)。


图 1 与数据一同部署的校验文件


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Eclipse+MinGW+SWIG包装Java接口 下一篇jQuery+CSS实现的菜单效果

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·C++ Lambda表达式保 (2025-12-26 05:49:45)
·C++ Lambda表达式的 (2025-12-26 05:49:42)
·深入浅出 C++ Lambda (2025-12-26 05:49:40)
·C语言指针从入门到基 (2025-12-26 05:21:36)
·【C语言指针初阶】C (2025-12-26 05:21:33)