游戏client和server交互数据加密和压缩问题

我现在在做自己的手机游戏,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) {
           //解密
     }

合理的设计数据收发逻辑,架构和设计能解决很多问题,不要把技术逼到死角上。
如果追求流量小的话,可以弃用json。
使用protobuf或者protobuf-like协议来序列化数据。体积会小很多很多。
如果还是嫌数据大,做个huffman编码,或者现成的用Zippy/Snappy或者LZO。

简单的就是可以用des等加密,或者rc4等流加密。压缩用gzip等。