安全算法用于创建许可证密钥?

Kek*_*koa 18 algorithm software-distribution product-key

我想分发一个应用程序,但有许可证密钥,他们可以输入解锁.什么是一个很好的算法来创建一个简洁的密钥,其中包含有关他们购买的版本的信息,以及许可证持续时间等其他内容.

我意识到这种保护可以被破解,但它让诚实的人保持诚实.我可能会或可能不会实现在线激活,但我主要关注生成这些密钥的好方法.

我们都看到过这种情况,哪种算法效果最好?我应该要求用户的明文名称并使用它来根据自己的信息创建唯一的产品密钥吗?

是否有可用于使其几乎不可能生成有效密钥的系统?

也许是公共/私有密钥对加密情况,其中只有制造商具有私钥并且数据可以通过公钥验证,但是公钥不能被劫持以创建有效密钥.

由于这是一个产品密钥,如果它相当短,64个字符或者最大128个字符会很好,但越短越好,32或更少会很好.

Rob*_*vey 11

您没有说明您使用的是什么平台,但是这里是Microsoft .Net中的一个:

http://jclement.ca/devel/dotnet/reallysimplelicensing.html

此页面记录了一个非常简单的许可方案,您可以将其与.NET应用程序一起使用.它旨在相当安全,易于实施且易于扩展.样本版本允许您提供其中嵌入客户端名称的许可证文件,但您可以轻松扩展它以添加其他识别信息,机器绑定,到期日期等.

该方案使用Microsoft的RSA库和XML签名.基本上,您将所需的任何内容放入XML文档并签署该文档.然后,您可以将该文件提供给您的客户,并且应用程序可以从该文件中读取许可证信息.由于文件是经过数字签名的,因此除非您释放私钥(您实际上不应该这样做),否则许可文件不会被篡改.