我试图创造一个独特的CD-KEY就摆在我们的产品中,就像在用户使用注册产品标准的软件箱子发现了一个普通的CD-KEY独特的CD-KEY生成。算法与验证
但是我们不是卖软件,我们为刑事和医疗目的销售DNA采集盒。用户将通过邮件收到唾液采集盒与它的CD-KEY,他们将使用该CD-KEY来创建我们的网站上的帐户,并得到他们的结果。测试结果将与CD-KEY相关联。这是我们必须将结果与患者联系起来的唯一方法。因此重要的是它不会失败:)
其中一个要求是,CD-KEY必须足够“分散”,以便不会有人输入错误的CD-KEY,仍然有批准为其他人套件,从而混合两个套件。这可能会让我们承担数千美元的赔偿责任。
例如,它不可能是数字的增量序列如
...
其理由是,如果有人接收到套件00002,但通过将其登记为000003事故,那么他的结果将会与其他人相匹配。因此,它必须像信用卡号码...除非输入有效的序列,你的随机打一个有效的数字机会是1百万...
此外,我们每年销售超过50000套各种供应商(他们将使用我们的算法生成他们自己的CD-KEYS),所以我们无法保存以前发布的所有CD-KEYS列表来检查重复。该算法必须生成唯一的CD-KEY。
我们还需要验证CD-KEY是有效使用快速检查算法,所以,如果他进入该代码是无效的,我们可以通知用户的能力。这留下了许多散列算法或MD5算法,我相信。它不能是128位,因为谁会花时间在电脑屏幕上输入它?
到目前为止,这是我想最后的CD-KEY结构会看起来像
(4个字符产品代码) - (4字符经销商代码) - (12字符唯一的,可验证的CD-KEY)
例如, 384A - GTLD - {4565 - FR54 - EDF3}
为了保证键的唯一性,我可以包括当前日期(20090521)作为源的一部分。我们不会每周产生一次以上的独特密钥,所以这个值经常变化足以达到独特的初始值。
什么可能的算法,我可以用它来生成唯一键?
密码是不安全的,如果它的安全在于算法,它是秘密保存的。 :) – 2009-05-21 10:48:59
最终的cd-key将使用带有密钥的散列类型算法进行加密。 – 2009-05-21 11:03:18