0

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

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

我想要实现的目标:user1 获得由我的服务器签名的许可证密钥(通过电子邮件或 w/e),在应用程序中输入密钥,客户端询问服务器密钥是否有效并已签名,如果是user1 的电脑可以玩。这只需要在“注册”许可证密钥时连接互联网,然后我会将密钥存储在散列文件或其他东西中,这样 user1 就可以玩而无需每次都联系服务器。简化版:user1 只需要连接一次(他第一次启动应用程序时),但我需要在每次启动时检查他是否可以玩。

客户端(在 Unity c# 中)工作正常,我所做的基本上是对密钥进行哈希处理并将其存储在一个文件中,然后对该文件进行哈希处理以验证用户不会修改它。

但是,我不知道在服务器端该怎么做。有没有可以实现我想做的API?我走错方向了吗?那是我第一次处理加密货币,我有点迷茫:confused:

任何帮助将不胜感激 !

4

1 回答 1

1

前提

许可您的软件可以是一项简单或相当复杂的任务:对于该请求没有“完美”的答案,主要是因为您选择的每个解决方案都将以某种(简单或困难)方式“可破解”。

另外,特别是在处理密码学时,通常增加复杂性等于增加时间。我建议你关注你想要保护的东西的价值,这样你就可以决定什么是值得实施的


许可

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

这是我在 Stack Overflow 上找到的关于这个想法的一个很好的答案(它是用 C# 编写的,但您可以分析架构并构建一个 nodejs 应用程序)。

于 2019-02-14T13:06:59.010 回答