对于个人MMO游戏项目,我用Java实现的一个自制可靠的基于UDP的协议。 鉴于我目前的设置我相信这将是相对简单的探听器劫持会话,所以为了防止这种情况,我正在学一点密码学的机会。 它非常有趣。
我可以成功地创建客户端,并使用一台服务器之间共享密钥的Diffie-Hellman密钥交换 (一个非常聪明的概念),但现在我需要以此来保证数据包的真实性。 我的初步测试到目前为止已经表明,几个不同密码的我用尽臃肿数据位的量,但我喜欢让事情尽可能小和尽可能快。
鉴于我只是试图将数据包进行验证,而不是nessecarily掩盖整个有效载荷,我有我可以把从密钥到数据包报头所产生的8个字节的会话ID,加密整个包,哈希回来的想法下降到8个字节。 我把未加密的数据包,并把8字节散列到会话ID的位置,然后把它关闭。
这将是安全的? 感觉有点不雅整个数据包进行加密只发送未加密的 - 有没有更好/更快的方式来实现我的目标? 请注意,我想这样做我自己,因为它的好经验,使林在第三方库或其它协议选项不是那么感兴趣。