我正在开发一个应用程序,用户只有在正确输入序列密钥时才会进行身份验证。此序列密钥与数据库中已存在的序列密钥匹配。此序列密钥应包含6位数字和3个字母。用户以书面形式从我这里获得这些密钥。
如何生成大量(约100,000,000个)串行密钥?
答案 0 :(得分:0)
我认为最简单的方法是:
[1,10000000)
范围内找到所需的数字,并将其设为x
将代表您的6位数字。a,b,c
。(a-'a' + b-'a'*26 + c-'a'*26*26)*10000000 + x
(其中'a'是字符'a'
的ascii表示,而a-'a'表示数字ascii减法)
请注意,生成的数字甚至可以放在long
中 - 假设它是64位。
可以通过迭代简单地生成多个数字,从a=b=c='a'
和x=0
开始,然后开始前进(增加1)。达到x=10000000
后,如果a
传递z - 增加b
,则增加a,....(类似于在普通整数加法运算中所做的那样)。
答案 1 :(得分:0)
您可以使用SecureRandom
之类的安全随机数生成器来生成密钥。
但正如评论中已经提到的,如果你生成那么多密钥,那么所有可能密钥的空间都不会太大。因此,攻击者很容易尝试使用密钥,直到发现密钥有效。