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