我想分发一个应用程序,但是有他们可以输入以解锁的许可证密钥。什么是创建简洁密钥的好算法,该密钥包含有关他们购买了哪个版本的信息,以及诸如许可证期限之类的其他信息。
我知道这种保护可以被破解,但是它使诚实的人保持诚实。我可能会或可能不会执行在线激活,但是我主要关心的是生成这些密钥的好方法。
我们都已经看到了这种情况,哪种算法最有效?我是否应该要求用户提供一个纯文本名称,并根据其自身的信息使用该名称来创建唯一的产品密钥?
是否存在可以用来使几乎不可能生成有效密钥的系统?
也许是公共/专用密钥对加密情况,其中只有制造商才拥有专用密钥,并且可以通过公用密钥来验证数据,但是不能劫持公用密钥来创建有效密钥。
因为这是一个产品密钥,所以如果它相当短,最好是64个字符或最多128个字符,但是越短越好,最好是32个或更少。
您没有说您正在使用什么平台,但这是Microsoft .Net中的一个平台:
NET的非常简单的许可方案
本页记录了可以与.NET应用程序一起使用的非常简单的许可方案。它的目的是相当安全,易于实施和易于扩展。该示例版本允许您为许可证文件提供嵌入了客户端名称的许可证文件,但是您可以轻松地对其进行扩展以添加其他标识信息,机器绑定,有效期等。 该方案利用了Microsoft的RSA库和XML签名。基本上,您将所需的内容放入XML文档中并对该文档签名。然后,您可以将该文件提供给客户,应用程序可以从该文件中读取许可证信息。由于文件是经过数字签名的,因此除非您释放私钥(否则您不应该这样做),否则不能篡改许可证文件。
本页记录了可以与.NET应用程序一起使用的非常简单的许可方案。它的目的是相当安全,易于实施和易于扩展。该示例版本允许您为许可证文件提供嵌入了客户端名称的许可证文件,但是您可以轻松地对其进行扩展以添加其他标识信息,机器绑定,有效期等。
该方案利用了Microsoft的RSA库和XML签名。基本上,您将所需的内容放入XML文档中并对该文档签名。然后,您可以将该文件提供给客户,应用程序可以从该文件中读取许可证信息。由于文件是经过数字签名的,因此除非您释放私钥(否则您不应该这样做),否则不能篡改许可证文件。