一尘不染

如何生成和验证软件许可证密钥?

c#

我目前正在开发产品(使用C#开发),该产品可以免费下载和安装,但版本非常有限。要访问所有功能,用户必须支付许可费并获得密钥。然后,该密钥将输入到应用程序中以“解锁”完整版本。

由于通常使用这样的许可证密钥,我想知道:

  1. 通常如何解决?
  2. 我如何生成密钥,应用程序如何对其进行验证?
  3. 我还应该如何避免让密钥在Internet上发布并由尚未支付许可证的其他人使用(该密钥基本上不是“他们的”密钥)。

我想我也应该以某种方式将密钥绑定到应用程序的版本,以便可以为功能版本中的新密钥收费。

在这种情况下,我还有什么需要考虑的?


阅读 628

收藏
2020-05-19

共1个答案

一尘不染

注意:您不能阻止用户进行盗版,而只能让诚实的用户更容易地做正确的事。

假设您不想为每个用户做一个特殊的构建,那么:

  • 为您自己生成产品的密钥
  • 取用户名
  • 将用户名,密钥和哈希与(例如)SHA1关联
  • 将SHA1哈希作为字母数字字符串解压缩。这是个人用户的“产品密钥”
  • 在程序内,执行相同的哈希,然后与产品密钥进行比较。如果相等,则确定。

但是,我再说一遍: 这不会防止盗版


我最近读到,这种方法在密码学上不是很好。但是这种解决方案已经很弱了( 因为软件本身必须在某个地方包含密钥
),所以我认为这种发现不会使解决方案在任何程度上失效。

只是以为我真的应该提这个;如果您打算从中得到其他东西,请当心。

2020-05-19