我现在在做自己的手机游戏,client和server之间的通信是socket,发送数据的格式是json,但是目前的数据没有加密,请问这种情况下客户端该用什么加密算法对数据进行加密呢?考虑到流量的问题,想对双方通信的数据进行压缩,请问有什么好的算法可以对数据进行压缩呢?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
个人感觉没必要。
先说压缩,通讯时间重要还是流量重要,压缩很耗时间。
再说加密,你是c/s模式,重要数据都在库里,就算加密传输到客户端,使用时客户端内存中也解密了。
你的客户端代码应该类似这样:
//人物行走
void walkTo(byte[] encryptedBuffer) {
//如果对你这个函数进行hook,加密等于摆设
byte[] targetBuffer = decrypt(encryptedBuffer);
//或者在这里截你的解码后的明文数据
tuple<int,int> target = getTarget(targetBuffer);
walkTo(target.x,target.y);
}
tuple<int,int> getTarget(byte[] targetBuffer) {
//按你的协议,解码出坐标
}
byte[] decrypt(byte[] encryptedBuffer) {
//解密
}
,你是mobile,自己做游戏,集中精力搞游戏吧。服务端的判断做健壮了,没必要加密。如果追求流量小的话,可以弃用json。使用protobuf或者protobuf-like协议来序列化数据。体积会小很多很多。如果还是嫌数据大,做个huffman编码,或者现成的用Zippy/Snappy或者LZO。
简单的就是可以用des等加密,或者rc4等流加密。压缩用gzip等。