Ale*_*lay 5 algorithm unique primary-key
我正在尝试创建一个独特的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个char产品代码) - (4个char经销商代码) - (12个char唯一,可验证的CD-KEY)
Ex.384A - GTLD - {4565 - FR54 - EDF3}
为了确保KEYS的唯一性,我可以将当前日期(20090521)作为来源的一部分.我们不会每周多次生成唯一键,因此该值经常变化以达到唯一初始值.
我可以使用哪种算法来生成唯一键?
创建字符串<providername>000001,<providername>000002等等或任何并将其与公共密钥加密,这就是你的"CD-KEY"的用户输入.使用私钥解密CD-KEY并验证解密后,您将获得具有有效提供者名称的有效字符串.