这只是为了保持诚实的客户诚实。
7 回答
有操作系统限制吗?我认为以下方法将非常简单:
选择一种获取机器 ID 的方式。例如,这可以
MachineGuid
是HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Cryptography
. (生成唯一的机器 id)定义您计划许可的功能以及识别它们的方式。你可以命名它们。如果你的产品很简单,它本身就可以成为一个功能。
创建公钥/私钥对。
以某种方式检索客户的机器 ID。您可以要求他手动发送,或者您可以创建一个简单的实用程序,或者它可以是您应用程序中的特殊命令。
以某种方式结合特征 ID 和机器 ID,并使用您的私钥对结果进行签名。例如,您可以通过串联进行组合。在这种情况下,结果字符串可能如下所示:“YourApplicationName-12345678-9abc-def0-1234-56789abcdef0”
签名将是一个字节序列,因此如果您想以文本形式传递它,您应该对其进行一些转换。例如,您可以将签名转换为Base64字符串。特征 ID、机器 ID 和它们组合的签名的组合将成为许可证密钥!
在您的应用程序分发中包含公钥并添加用于许可证验证的逻辑。如果许可证有效,那么您应该检查它是否在正确的机器上和正确的应用程序中使用。
更多关于公钥/私钥操作的信息。
请告诉是否有不清楚的地方,我会尽力提供详细的答案。
编辑:我确信所有这些都可以在 1 天内完成,但我同意其他建议您使用现有解决方案的人的观点。有很多不同的平台和编程语言。
你为什么不从别人那里得到一个。如果你只愿意投入一天,你就不会得到一个好的产品。
许可证密钥不会阻止客户多次安装您的软件,除非该密钥与服务器名称的散列等相关联。
将产品的功能(用户数量、主机 IP、到期日期等)放在纯文本文件中。使用公钥对文件进行签名,然后在运行时检查签名。
如果他们有动力,他们可以反编译代码,抽出检查或其他任何东西,但这会阻止篡改,并且看起来很漂亮和正式。
你不可能在一天内把工作做好,而且总体效果很可能是负面的。它会惹恼您忠诚和诚实的客户,并且不会阻止不诚实的客户。
相反,花一天时间想出一种方法来衡量你的产品有多少盗版。一旦你知道了这一点,你就可以估计你损失了多少钱,以及你真正应该在保护或其他方法上付出多少努力。
如果你仍然想这样做,最简单的方法是收集一些安装唯一的数据(操作系统用户名、电子邮件地址、CPU/主板序列号 - 任何你想绑定的数据),让用户发送它给您并通过使用您的私钥对其进行加密来生成许可证密钥。您的软件应该收集相同的数据,使用您的公钥解密许可证并比较两个 blob。
如果您只需要伪代码(什么语言/平台?)您可以获取计算机 MAC 地址(假设是唯一的)并构建一个将其结合一些其他计算机参数的函数 - 并确保每次应用程序运行时都对其进行验证针对您自己的数据库,将用户的电子邮件保留在该行中。
如果有任何变化 - 软件将无法运行,但用户可以请求新密钥 - 使用相同的邮件 - 然后您可以撤销旧密钥并给他一个新密钥。
最简单的许可证生成器:带有种子校验和的 ini 文件,其中包含客户名称和有关启用哪些模块的信息。对于黑客来说很容易破解,但对于非黑客来说,它是安全的。该名称必须在公开显示的应用程序的输出中可见,以便其他潜在客户无法使用许可证文件。