小编典典

带有验证的唯一CD-KEY生成算法

algorithm

我试图创建一个唯一的CD-KEY放入我们的产品包装盒中,就像用户在用于注册产品的标准软件包装盒中找到的普通CD-KEY一样。

但是,我们不出售软件,而是出于犯罪和医疗目的出售DNA收集套件。用户将通过邮件收到带有CD-KEY的唾液收集套件,他们将使用该CD-
KEY在我们的网站上创建帐户并获得结果。测试结果将链接到CD-KEY。这是我们将结果与患者联系起来的唯一方法。因此,重要的是不要失败:)

要求之一是必须将CD-KEY列表充分“分开”,以免有人输入不正确的CD-
KEY并仍然允许其他人使用该套件,从而混淆了两个套件。这可能使我们承担数千美元的赔偿责任。

例如,它不能是数字的递增序列,例如
00001
00002
00003

原因是如果某人收到试剂盒00002,但偶然将其注册为000003,那么他的结果将与其他人匹配。因此,它必须类似于信用卡号…除非输入有效的序列,否则您随机击中有效数字的机会是百万分之一。

此外,我们每年会向各种提供商出售50,000套工具包(他们将使用我们的算法生成自己的CD-KEYS),因此我们无法维护所有以前发行的CD-
KEYS的列表以检查是否重复。该算法必须生成唯一的CD-KEY。

我们还要求能够使用快速检查算法来验证CD-
KEY是否有效,以便我们可以通知用户他输入的代码是否无效。我相信,这遗漏了许多哈希或MD5算法。它不能是128位的,因为谁会花时间在计算机屏幕上将其键入?

到目前为止,这就是我一直在思考的最终CD-KEY结构应为

(4个字符的产品代码)-(4个字符的经销商代码)-(12个字符唯一,可验证的CD-KEY)

示例。384A-GTLD-{4565-FR54-EDF3}

为了确保KEYS的唯一性,我可以将当​​前日期(20090521)作为来源的一部分。我们不会每周多次生成唯一密钥,因此,为了唯一初始值的目的,此值经常会发生足够的变化。

我可以使用什么算法来生成唯一密钥?


阅读 681

收藏
2020-07-28

共1个答案

小编典典

创建字符串<providername>000001<providername>000002等等或任何并将其与公共密钥加密,这就是你的“CD-
KEY”的用户输入。使用私钥对CD-KEY进行解密,并验证解密后您会获得带有有效提供者名称的有效字符串。

2020-07-28