【问题标题】:Best way to generate activation codes for software?生成软件激活码的最佳方法?
【发布时间】:2009-11-19 13:32:32
【问题描述】:

随机生成一些不太可能再次随机生成的激活码以用于激活软件的好方法是什么?我正在为 Web 应用程序制作一个自动履行系统。

我正在使用 C#。

【问题讨论】:

    标签: c# activation-codes


    【解决方案1】:

    【讨论】:

    • 为此+1,除了用户输入(向他们发送电子邮件以便他们可以复制/粘贴)会很痛苦之外,它是独一无二的,很可能不会重新生成。
    • 我不知道这个。如果宇宙的膨胀和收缩实际上是周期性的而不是一次性的,那么你最终会得到重复。
    • 我认为 Guid.NewGuid() 已经使用 CurrentUniverseSize() 所以它可以工作。
    • 我同意@logicnp 这不适用于激活码,因为您的软件需要能够读取嵌入在 Guid 中的信息以确保它被激活。
    【解决方案2】:

    这取决于你的目标。 GUID 生成起来很简单,但是如果用户必须手动输入它会很痛苦。如果通过(例如)单击电子邮件中提供的 URL 进行激活,或者您可以期望用户从激活电子邮件中复制并粘贴一个值,那很好。

    在其他情况下(例如,激活码以某种方式物理打印在包装上的收缩包装软件),用户将手动输入代码。在这种情况下,您最好使用类似于 Microsoft 和 Blizzard 使用的方法:生成由五组五个随机字母数字字符组成的代码(如果您想消除激活代码包含类似内容的风险,请省略元音4SHIT),并根据主列表检查生成的每个代码是否存在重复项。 (尽管我认为从 {1, 2, ... 34^26 - 1} 中提取的包含重复项的 100,000 个序列的几率很小。很难确定,因为我知道的唯一计算方法它溢出了一个双倍。)

    【讨论】:

      【解决方案3】:

      Guid.NewGuid().ToString()

      如果您不介意 36 个字符的长度。

      【讨论】:

        【解决方案4】:

        您可能应该只使用 Guid

        【讨论】: