【求助】Cocos2d-JS服务端和客户端的通信怎么加密和解密?

1,游戏的服务端用python写的,客户端用js写的,怎么通信?

2,通信过程的数据怎么加密和解密(base64)??

http://my.oschina.net/Jacker/blog/86383?p=2#comments

出于安全,以及通讯时对于加密代价的考虑,建议使用rsa以及rc4,步骤如下:

  1. 客户端已与服务器握手成功
  2. 服务器随机生成rsa公钥与私钥,将公钥以明文方式发给客户端
  3. 客户端随机生成一个rc4密码,用收到的rsa公钥加密这个rc4密码后发给服务器,服务器用rsa私钥解密出rc4密码
  4. 这时客户端与服务器端都已经有了rc4密码,那么通讯过程中就用rc4加密/解密通讯

好处:

  1. 每个客户端每次通讯rc4是随机的,不用写死在代码里
  2. rsa是目前较好的不对称加密方法,不用太担心这个rc4密码被破解出来
  3. rc4方法加密不会增加通讯数据的大小长度

坏处:

  1. 服务器在生成rsa密码时,会消耗一些资源,所以最好使用单独线程或者线程池来生成(当然 ,你也可以每一个服固定一个rsa公、私密(在服务器开启时,随机生成一个,然后所有客户端共用这一个rsa),就不需要去随机生成,)
  2. rc4加解密也是需要代价的,当然这个代价与异或比起来稍微大一些(在我看来可以忽略不计了),但是安全一些

提示:使用base64或者一些其它方法会增加通讯数据的大小长度,特别是base64
注意:对于通讯加密,最重要的就是两点,一是安全,二是通讯数据的长度

当然,你如果不使用rc4也可以自已对数据字节进行一些自定义的加密,比如交换字节位置、替换指定位置的字节或者对字节进行一些运算等等,但不管如何你的加密方法(自定义加密方法的代码)与加解密用的密码不能被暴露

另外还可以对数据包进行一些包头或者包尾的加验证,至于验证方法就各自发挥了