我可以在 1 天内自行开发的最简单的许可证密钥生成器是啥? [关闭]

Posted

技术标签:

【中文标题】我可以在 1 天内自行开发的最简单的许可证密钥生成器是啥? [关闭]【英文标题】:What is the simplest license key generator I can develop myself in 1 day? [closed]我可以在 1 天内自行开发的最简单的许可证密钥生成器是什么? [关闭] 【发布时间】:2010-12-15 18:25:40 【问题描述】:

这只是为了让诚实的客户保持诚实。

【问题讨论】:

【参考方案1】:

有操作系统限制吗?我认为以下方法将非常简单:

    选择一种获取机器 ID 的方式。例如,这可以是HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Cryptography 中的MachineGuid 注册表项。 (Generating a unique machine id)

    定义您计划许可的功能以及识别这些功能的方式。你可以命名它们。如果你的产品很简单,它本身就是一个功能。

    创建公钥/私钥对。

    以某种方式检索客户的机器 ID。您可以要求他手动发送,也可以创建一个简单的实用程序,或者它可以是您应用程序中的特殊命令。

    以某种方式组合功能 ID 和机器 ID,并使用您的私钥对结果进行签名。例如,您可以通过串联进行组合。在这种情况下,结果字符串可能如下所示:“YourApplicationName-12345678-9abc-def0-1234-56789abcdef0”

    签名将是一个字节序列,所以如果你想以文本形式传递它,你应该对其进行一些转换。例如,您可以将签名转换为Base64 字符串。 特征 ID、机器 ID 和它们的组合签名将成为许可证密钥!

    在您的应用程序分发中包含公钥并添加用于许可证验证的逻辑。如果许可证有效,那么您应该检查它是否在正确的机器和正确的应用程序中使用。

更多关于公钥/私钥操作here。

如果有不清楚的地方请告诉我,我会尽力提供详细的答案。

编辑:我确信所有这些都可以在 1 天内完成,但我同意其他建议您使用现有解决方案的人的观点。有很多不同的平台和编程语言。

【讨论】:

【参考方案2】:

你为什么不从别人那里得到一个。如果你只愿意投入一天,你就不会得到一个好的产品。

【讨论】:

嗯,我一直很好奇专业人士是如何做到的,所以这可能是一个学习的好机会。 如果专业人士决定自己编写这样的解决方案,他将花费超过 1 天的时间。【参考方案3】:

许可证密钥不会阻止客户多次安装您的软件,除非该密钥与服务器名称的哈希等相关。

【讨论】:

最好不要在这里讨论 DRM 争论,我会指出我对 DRM 错误原因的汇编:superuser.com/questions/14224/how-to-explain-drm-cannot-work/… 这并不是说您根本不应该保护您的程序,只是那更多的drm - 合法用户的更多痛苦。许可证密钥通常足以阻止您的软件被公然盗版。【参考方案4】:

将产品的功能(用户数量、主机 IP、到期日期等)放在纯文本文件中。使用公钥对文件进行签名,然后在运行时检查签名。

如果他们有动力,他们可以反编译代码、抽出检查或其他任何东西,但这会阻止篡改,而且看起来很正式。

【讨论】:

主机IP好像不是个好参数,笔记本电脑至少一天换两次。【参考方案5】:

你不可能在一天内把工作做好,而且总体效果很可能是负面的。它会惹恼您忠诚和诚实的客户,但不会阻止不诚实的客户。

相反,花一天时间想出一种方法来衡量您的产品盗版的程度。一旦了解了这一点,您就可以估算出您损失了多少钱,以及您真正应该在保护或其他方法上投入多少精力。

如果你仍然想这样做,最简单的方法是收集一些安装唯一的数据(操作系统用户名、电子邮件地址、CPU/主板序列号 - 任何你想绑定的数据),询问用户将其发送给您并通过使用您的私钥对其进行加密来生成许可证密钥。您的软件应该收集相同的数据,使用您的公钥解密许可证并比较两个 blob。

【讨论】:

【参考方案6】:

如果您只需要伪代码(什么语言/平台?) 您可以获取计算机 MAC 地址(假设是唯一的)并构建一个将其结合一些其他计算机参数的函数 - 并确保每次应用程序针对您自己的数据库运行时验证它,将用户的电子邮件保留在该行中。

如果有任何变化 - 软件将无法运行,但用户可以请求新密钥 - 使用相同的邮件 - 然后您可以撤销旧密钥并给他一个新密钥。

【讨论】:

如果用户更改他们的主板或其他相关参数会发生什么 - 这不是一个好主意,我不想在升级计算机时获得新的许可证密钥。如果其他人通过您的电子邮件请求许可证密钥会发生什么?嗯? A.我真的不相信许可证密钥,但如果你足够关心使用它们,那么,是的,当用户升级他的硬件时 - 这是一个问题(微软在 vista 许可方面遇到了这个问题 - 如果你需要重新激活 vista您更改 MB 甚至有时甚至是视频板),如果您只将许可证发送到请求的电子邮件 - 并在新请求到达时撤销旧许可证,电子邮件所有者 - 是许可证的原始所有者将没有问题。但你说得对,走这条路需要考虑很多事情。 更正评论。原所有者必须重新发出许可请求。【参考方案7】:

最简单的许可证生成器:带有种子校验和的 ini 文件,其中包含客户名称和有关启用哪些模块的信息。对于黑客来说很容易破解,但对于非黑客来说,它是安全的。该名称必须在公开显示的应用输出中可见,以便其他潜在客户无法使用许可文件。

【讨论】:

以上是关于我可以在 1 天内自行开发的最简单的许可证密钥生成器是啥? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

VB.net 简单的许可证密钥来保护应用程序

使用 OpenSSL 生成短许可证密钥

许可证方案、欺骗安全和撤销功能

为java项目生成许可证密钥[重复]

如何使用 java 生成许可证密钥

vmware许可证密钥