我正在开发一个应用程序,其中用户只有在正确输入序列密钥时才通过身份验证。此序列号与数据库中已存在的序列号相匹配。此序列号应由 6 个数字和 3 个字母组成。用户以书面形式从我这里获得这些密钥。
如何生成大量(大约 100,000,000 个)序列密钥?
我正在开发一个应用程序,其中用户只有在正确输入序列密钥时才通过身份验证。此序列号与数据库中已存在的序列号相匹配。此序列号应由 6 个数字和 3 个字母组成。用户以书面形式从我这里获得这些密钥。
如何生成大量(大约 100,000,000 个)序列密钥?
我认为最简单的方法是:
[1,10000000)
,让它成为x
你的 6 位数字。a,b,c
。(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
,....(类似于你在普通整数加法运算中所做的)。
您可以使用安全的随机数生成器SecureRandom
来生成密钥。
但是正如评论中已经提到的那样,如果您生成那么多键,那么所有可能键的空间不会大很多。因此,攻击者很容易尝试使用密钥,直到找到有效的密钥。