C# Unity客户端/NodeJS服务器:如何签名和验证数据?

C# Unity客户端/NodeJS服务器:如何签名和验证数据?,c#,node.js,unity3d,networking,cryptography,C#,Node.js,Unity3d,Networking,Cryptography,我也在Unity的论坛上发布了这个帖子,但由于它更面向服务器/加密,我也会在这里询问 正如标题中提到的,我使用unity作为客户端,并使用socket.io(使用BestHTTP资产)连接到nodeJS服务器 我想要实现的是:user1获得由我的服务器签名的许可证密钥(通过电子邮件或w/e),在应用程序中输入密钥,客户端询问服务器密钥是否有效且已签名,如果有效,user1的计算机可以播放。 这只需要在“注册”许可证密钥时连接internet,然后我会将密钥存储在散列文件或其他文件中,以便user

我也在Unity的论坛上发布了这个帖子,但由于它更面向服务器/加密,我也会在这里询问

正如标题中提到的,我使用unity作为客户端,并使用socket.io(使用BestHTTP资产)连接到nodeJS服务器

我想要实现的是:user1获得由我的服务器签名的许可证密钥(通过电子邮件或w/e),在应用程序中输入密钥,客户端询问服务器密钥是否有效且已签名,如果有效,user1的计算机可以播放。 这只需要在“注册”许可证密钥时连接internet,然后我会将密钥存储在散列文件或其他文件中,以便user1可以在每次不联系服务器的情况下播放。 简化版:user1只需要连接一次(他第一次启动应用程序时),但我需要在每次启动时检查他是否被允许玩

客户端(在Unity c#中)工作正常,我所做的基本上是散列密钥并将其存储在一个文件中,然后散列该文件以验证用户没有修改它

但是,我不知道在服务器端做什么。是否有API可以实现我想做的事情?我走错方向了吗? 这是我第一次处理加密,我有点迷茫:困惑:

任何帮助都将不胜感激

前提 授权您的软件可能是一项简单的任务,也可能是一项相当复杂的任务:对于这个请求,没有“完美”的答案,基本上是因为您将选择的每个解决方案都会以某种方式(简单或困难)进行“黑客攻击”

另外,特别是在处理加密技术时,复杂性的增加通常意味着时间的增加。我建议您将重点放在您试图保护的内容的价值上,这样您就可以决定哪些内容值得实施


许可 可能最简单的方法是实现一个数字签名证书,其中包含有关许可软件的所有信息(包括有助于系统识别恶意行为的其他数据)。使用应该是一个好方法


我在Stack Overflow上找到了一个关于这个想法的例子(它是用C语言编写的,但是你可以分析架构并构建一个nodejs应用程序)。

你能为这个问题添加你的代码吗?你已经试过什么了?您不清楚所提议的体系结构的哪一部分?所有已经使用的代码都在工作,这不是问题所在。我正在寻找一种无需连接到internet即可在服务器端签署数据并在客户端验证数据的方法,并且不知道我应该使用什么方法,或者这是否是一种好方法/是否有其他方法可以实现我的目的。感谢您的回答,我将对此进行研究。很高兴它有所帮助!如果您正在寻找答案,请将其标记为正确答案!:)