1

ラッフル用に大量のコードを生成する必要があります。ユーザーがウェブサイトでコードを入力するのに苦労したくないので、コードが長すぎてはいけません。アルゴリズムに必要なコードの数をどのように知ることができますか?コードをもう一度繰り返すには?どうすればコードを生成できますか?コードには数字と文字の両方を使用できます。

4

2 に答える 2

3

0大文字と小文字の文字と数字、たとえば、OoI、などの混同しやすいものを削除すると1l56 種類の文字が得られます。長さ x のコードの場合、56 乗 x 可能な組み合わせが得られます。

4 文字で 9834496 の異なる組み合わせが得られます。
7 文字で、1727094849536 の異なる組み合わせが得られます。

一意であることが保証されているランダムな組み合わせを選択するには、作成した以前の組み合わせをすべて保持し、新しい組み合わせをそれぞれチェックするだけです。

于 2012-12-16T18:36:58.953 に答える
0

0 から開始する代わりに、最大値から開始することもできます。最初にリストを構成する文字を決定し、それを使用してサイズ m のルックアップ テーブルを作成する必要があります。

ランダムな素数を作成します。次に、最大値 n = c ** m - 1 から始まるジェネレーターを使用します。ここで、c はコードあたりの文字数であり、キーは k = n % p です。次に、それを基数 m の数値に変換するだけで、ルックアップ テーブルを使用して文字列を作成できます。

次に、必要に応じてジェネレーター関数を介して、または一度にすべてのコードを生成します。ただし、p と/または n は、単純に力ずくで決定されます。これは、おそらく最大値をキーとして使用すべきではないことも意味します。

p が必要なコード数よりもはるかに大きい限り、p が一定である限り繰り返されません。また、誰もpが何であるかを知らない限り、暗号的に安全かもしれません. p は、繰り返しの可能性を避けるために小さく保つ必要がある可能性がありますが、p は実際の素数であって、可能性のある素数ではありません。ただし、キーを生成したら、最悪の場合、各キーを生成するのは多項式でなければなりません。必要なすべてのキーを一度に生成し (必要に応じて余分に作成する)、それらを保存し、必要に応じて配布する方がおそらく良いでしょう。このようにして、キーが一意であることを確認できます。何らかの原因でキー ジェネレータが失敗し、p の 2 番目の値を作成するか、p の元の値を保存する必要が生じた場合に備えて、

キーの使用回数を制限したり、アカウントに割り当てたりすることで、ハッカーが 1 つのキーを見つけて配布するだけで済むという問題を回避できます。

于 2012-12-17T03:51:57.260 に答える