私は、ユーザーがシリアルキーを正しく入力した場合にのみユーザーが認証されるアプリケーションを開発しています。このシリアルキーは、データベースにすでに存在するシリアルキーと一致します。このシリアルキーは、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を増やし、azを渡した場合はb、...を増やします(通常の整数加算演算で行うのと同様です)。
キーを生成するのと同じように、安全な乱数ジェネレーターを使用できSecureRandomます。
しかし、コメントですでに述べたように、その数のキーを生成する場合、すべての可能なキーのスペースはそれほど大きくありません。そのため、攻撃者は、機能するキーが見つかるまでキーを試すのが簡単になります。