私は、ユーザーがシリアルキーを正しく入力した場合にのみユーザーが認証されるアプリケーションを開発しています。このシリアルキーは、データベースにすでに存在するシリアルキーと一致します。このシリアルキーは、6桁の数字と3つのアルファベットで構成されている必要があります。ユーザーは私からこれらのキーを書面で受け取ります。
多数(約1億)のシリアルキーを生成するにはどうすればよいですか?
私は、ユーザーがシリアルキーを正しく入力した場合にのみユーザーが認証されるアプリケーションを開発しています。このシリアルキーは、データベースにすでに存在するシリアルキーと一致します。このシリアルキーは、6桁の数字と3つのアルファベットで構成されている必要があります。ユーザーは私からこれらのキーを書面で受け取ります。
多数(約1億)のシリアルキーを生成するにはどうすればよいですか?
私の意見で最も簡単な方法は次のとおりです。
[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を渡した場合はb
、...を増やします(通常の整数加算演算で行うのと同様です)。
キーを生成するのと同じように、安全な乱数ジェネレーターを使用できSecureRandom
ます。
しかし、コメントですでに述べたように、その数のキーを生成する場合、すべての可能なキーのスペースはそれほど大きくありません。そのため、攻撃者は、機能するキーが見つかるまでキーを試すのが簡単になります。