java中的网络通信加密

Tim*_*Tim 9 java security encryption networking

我和朋友正在开发一个带有客户端/服务器架构的Java游戏.它运作良好,但我遇到了一个问题.我们使用TCP套接字在服务器和客户端之间建立联网.我们的网络协议没有加密,只能由不愿意观看流的人阅读.

我们考虑过如何应用某种加密技术来隐藏登录信息并阻止人们编写自己的客户端.但是添加/减少字节等基本内容似乎很容易理解.

用于加密游戏网络通信(或至少是游戏登录信息)的常用方法是什么?在java中编写服务器和客户端,是否有任何有用的Java库?

Boz*_*zho 12

使用公钥加密(例如RSA)并实现类似SSL握手的东西,或者当然使用SSL - 在这里你可以看到一个例子.

这是一个简化的序列:

  • 服务器将其公共RSA密钥发送给客户端
  • 客户端生成对称密钥(例如,使用AES)
  • 客户端使用服务器的公钥加密对称密钥并将其发送到服务器
  • 服务器解密接收的对称密钥

现在,客户端和服务器都有一个无人窃听的密钥.然后使用该密钥加密所有数据.