0

我正在开发一个应用程序,其中用户只有在正确输入序列密钥时才通过身份验证。此序列号与数据库中已存在的序列号相匹配。此序列号应由 6 个数字和 3 个字母组成。用户以书面形式从我这里获得这些密钥。

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

4

2 回答 2

0

我认为最简单的方法是:

  1. 在 range 中找到所需的数字[1,10000000),让它成为x你的 6 位数字。
  2. 找到 3 个字符(假设在 az 范围内)。让他们成为a,b,c
  3. 你的号码是(a-'a' + b-'a'*26 + c-'a'*26*26)*10000000 + x

(其中 'a' 是字符的 ascii 表示'a',a-'a' 表示数字 ascii 减法)

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


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

于 2012-12-28T11:34:35.810 回答
0

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

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

于 2012-12-28T11:39:31.213 回答