代码之家  ›  专栏  ›  技术社区  ›  Teo Choong Ping

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

  •  7
  • Teo Choong Ping  · 技术社区  · 15 年前

    这只是为了让诚实的顾客诚实。

    7 回复  |  直到 12 年前
        1
  •  9
  •   Community Egal    7 年前

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

    1. 选择获取计算机ID的方法。例如,可以 MachineGuid 中的注册表项 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Cryptography . ( Generating a unique machine id )

    2. 定义您计划许可的功能以及识别它们的方法。你只需说出他们的名字。如果您的产品很简单,那么它本身就是一个特性。

    3. 创建公钥/私钥对。

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

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

    6. 签名将是一个字节序列,因此如果您想以文本形式传递它,应该对它进行一些转换。例如,您可以将签名转换为 Base64 字符串。 功能ID、机器ID和组合签名的组合将是许可证密钥!

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

    有关公钥/私钥操作的详细信息 here .

    请告知是否有不清楚的地方,我会尽量提供详细的答案。

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

        2
  •  5
  •   Jim Deville    15 年前

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

        3
  •  2
  •   Daniel    15 年前

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

        4
  •  2
  •   Will Hartung    15 年前

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

    如果他们有动机,他们可以反编译代码,取消检查或其他,但它将阻止篡改,它将看起来很好和正式。

        5
  •  2
  •   Franci Penov    15 年前

    你不可能在一天内做好一件事,而且总的来说,这样做的效果可能是负面的。它会激怒你忠诚诚实的客户,也不会阻止不诚实的客户。

    相反,花这一天的时间想出一种方法来衡量你的产品受到多少盗版。一旦你知道了这一点,你就可以估计你损失了多少钱,你真正应该投入多少努力去保护或其他方法。

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

        6
  •  1
  •   Dani    15 年前

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

    如果有任何变化-软件将不起作用,但用户可以请求一个新的密钥-用同样的邮件-然后你可以撤销旧的密钥,给他一个新的。

        7
  •  1
  •   Lars D    15 年前

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