我正在制作一个在线扑克服务器在NodeJS。目前,游戏状态正在发送给每个客户端。因此,使用调试工具,客户端可以查看其他玩家的所有卡片ID。我想发送游戏状态,但修改它,使玩家的身份证是代表密文。
我可以使用什么样的加密协议/方案/库来加密玩家的卡,以便客户端只能读取自己的卡,直到向每个人透露一张卡片为止,在这种情况下,卡ID将以明文形式发送?
例如,一个玩家的手可能是“啊”,“Kh”,它代表他持有的是心脏的Ace和心脏的国王。相反,它可能应该被加密到类似‘xxxxxxxx’,‘xxxxxxxx’的东西,除非客户端能够解密手。
发布于 2019-10-03 18:48:56
始终假定客户端已被破坏。永远不要相信国家对客户的信任。永远不要向客户发送任何它没有必要看到的信息。
加密是毫无意义的。如果客户端可以以某种方式解密其他人的状态,那么假设客户端会这样做。如果它不能解密,你也可以不发送它。
将游戏状态保持在服务器上,并只提供每个客户端对客户端手和公共游戏状态的视图,仅用于显示目的。客户端可以向您发送它所做的移动,更新服务器上的状态,并将其发回。
https://softwareengineering.stackexchange.com/questions/399290
复制相似问题