我正在尝试将软件许可添加到我计划销售的软件中(这意味着如果许可证正确,则可以访问该软件。否则,请中断访问)。我没有任何服务器,因此无法连接到它们。我将使用付费在线服务之一来销售我的软件(我也不喜欢使用他们的服务器支持进行许可,因为现在是时候让我休息一下了)。所以,我决定使用客户端验证。无论如何,我对如何生成许可证(许可证算法)以及如何验证它(根据许可证算法)感到困惑。我可以按照自己的方式做到,但不喜欢弄乱这个安全问题,所以决定接受你的专业知识帮助。请告诉我/告诉我/给出如何创建此许可证生成器和验证器的示例。而且,如果您要使用算法发布示例,如果您认为它很复杂,请务必解释它。因为那时我只能创建一个我自己的
除此之外,我有另一个疑问。也就是说,只有一个软件的许可证密钥可以吗?因此可以毫无问题地对软件进行硬编码。
请帮助..
答案 0 :(得分:4)
使用公钥密码系统。应用程序只需要包含许可证签名权限的公钥,因此它没有生成新许可证所需的密钥(只有您将拥有该密钥)。签名文档可以列出应启用/禁用的任何可选功能。这里有一个教程,其中包含用于签名文件和验证签名的示例代码:http://docs.oracle.com/javase/tutorial/security/apisign/index.html
答案 1 :(得分:0)
正如@James Youngman所说 - PPK是要走的路。如果您想要使用此快捷方式,请参阅TrueLicense。
至少,看一看设计方面的考虑,一睹你必须要照顾的东西,如果你想自己开始这个
答案 2 :(得分:0)
实际上可以破解任何保护措施。问题是黑客需要付出多少努力才能应用。
拥有1个硬编码密钥可能是您可以选择的最差解决方案,只要密钥可以轻松共享即可。密钥应该是f(system_id),因此密钥共享将不起作用。
进行硬编码密钥验证也不是很好。黑客只会将这部分代码复制/粘贴到keygen。
更好的解决方案是检查服务器端的密钥http://activation-cloud.com。但目前只有C ++。