1

我正在尝试向我计划出售的软件添加软件许可(这意味着如果许可正确,则授予对软件的访问权限。否则,中断访问权限)。我没有任何服务器,所以无法连接到它们。我将使用一项付费在线服务来销售我的软件(我也不喜欢使用他们的服务器支持来获得许可,因为我该休息一下了)。所以,我决定使用客户端验证。无论如何,我对如何生成许可证(许可证算法)以及如何验证它(根据许可证算法)感到困惑。我可以按我的方式做,但不喜欢搞砸这个安全问题,所以决定请你的专业知识帮助。请告诉我/给我展示/举例说明如何创建此许可证生成器和验证器。而且,如果您要发布带有算法的示例,如果您认为它很复杂,请善意地解释它。因为只有我才能创造我自己的

除此之外,我还有一个疑问。也就是说,一个软件只有一个许可证密钥可以吗?因此,它可以硬编码到软件中而不会出现任何问题。

请帮忙..

4

3 回答 3

4

使用公钥密码系统。该应用程序只需要包含许可证签署机构的公钥,因此它没有生成新许可证所需的密钥(只有您拥有)。签名的文档可以列出应该启用/禁用的任何可选功能。带有用于签署文件和验证签名的示例代码的教程在这里:http ://docs.oracle.com/javase/tutorial/security/apisign/index.html

于 2012-05-13T17:53:25.037 回答
0

实际上任何保护都可以被破解。问题是黑客需要付出多少努力。

只要密钥可以轻松共享,拥有 1 个硬编码密钥可能是您可以选择的最糟糕的解决方案。密钥应该是 f(system_id),因此密钥共享将不起作用。

硬编码的密钥验证也不好。黑客只需将这部分代码复制/粘贴到注册机即可。

更好的解决方案是像http://activation-cloud.com那样检查服务器端的密钥。但目前它只是 C++。

于 2012-05-14T10:32:17.263 回答
0

正如@James Youngman 所说 - PPK 是要走的路。如果您想要使用它的快捷方式,请参阅TrueLicense

至少,看看设计注意事项,看看如果你想自己开始这个,你必须注意什么

于 2012-05-13T20:13:23.097 回答