创建大量随机序列密钥

时间:2012-12-28 11:27:21

标签: algorithm random license-key serial-number

我正在开发一个应用程序,用户只有在正确输入序列密钥时才会进行身份验证。此序列密钥与数据库中已存在的序列密钥匹配。此序列密钥应包含6位数字和3个字母。用户以书面形式从我这里获得这些密钥。

如何生成大量(约100,000,000个)串行密钥?

2 个答案:

答案 0 :(得分:0)

我认为最简单的方法是:

  1. [1,10000000)范围内找到所需的数字,并将其设为x 将代表您的6位数字。
  2. 找到3个字符(假设在范围a-z中)。让他们成为a,b,c
  3. 您的电话号码是(a-'a' + b-'a'*26 + c-'a'*26*26)*10000000 + x
  4. (其中'a'是字符'a'的ascii表示,而a-'a'表示数字ascii减法)

    请注意,生成的数字甚至可以放在long中 - 假设它是64位。


    可以通过迭代简单地生成多个数字,从a=b=c='a'x=0开始,然后开始前进(增加1)。达到x=10000000后,如果a传递z - 增加b,则增加a,....(类似于在普通整数加法运算中所做的那样)。

答案 1 :(得分:0)

您可以使用SecureRandom之类的安全随机数生成器来生成密钥。

但正如评论中已经提到的,如果你生成那么多密钥,那么所有可能密钥的空间都不会太大。因此,攻击者很容易尝试使用密钥,直到发现密钥有效。