在移动应用开发中, 对于数据安全传输要求非常高, 尤其是涉及到用户财产安全的时候,都会对数据进行层层加密来确保数据的安全性 完整性;
`在这里演示:我将演示银行在移动应用上的数据加密;
传输的数据格式: json (别问我为什么不是xml? json已经是一种趋势了)
使用到加密工具: md5 3des ; 两者的加密算法写到C代码里面,java通过JNI调用C代码进行加密.
客户端:数据加密和传输
先上流程图….. ( 个人画图水平就这样了…如果有好的画图工具求推荐啊)
1 : 数据加密
本地数据md5 3DES加密算法, 强烈建议写到C代码里面, 在使用到加密时候通过JNI调用so库,防反编译;
将数据封装到一个实体Bean中, 我们项目是全部封装到了BusinessConnection Bean 中了, 这里还区分了基本数据( Common )和上层业务数据(Business ), 还有一个属性是md5 哈希值校验位( Sign ) ;
首先 将Common 和Business 数据转换成Json 数据格式;
其实 使用调用so库里md5算法对json 数据加密得到一个哈希值, 并将该哈希值赋值给 BusinessConnection 的sign 属性;
再其次 将BusinessConnection Bean转换成Json 数据格式字符串并格式化成UTF-8, 再使用3DES对该字符串进行二次加密.
最后,将加密的密文上传给服务器;
2 : 数据解密
解密也简单, 当服务器获得数据之后, 先通过3DES解密,UFT-8转码;
获得Commo和Business Bean 的Json 字符串; 然后使用md5 加密获得哈希值,
将加密后哈希值和传进来的sign 哈希值对比, 如果哈希值一致, 说明数据是完整的, 传输的过程中没有被串改过( 这一步非常非常重要!);
服务器后台统一数据访问接口
统一服务器数据访问接口一来便于管理, 二是暴露的接口越少越能提供安全;
当移动端有很多的业务逻辑,同时访问一个服务器后台接口; 这个时候服务器后台根据客户端提交数据的中的一个交易码来区分哪个业务逻辑. 接着封装数据为json格式返回给客户端.
Duanggggg 个人银行项目小小总结 如果写得不好或你有不同见解欢迎评论~~