ユーザーが製品を登録するために使用する標準のソフトウェア ボックスにある通常の CD-KEY と同様に、製品のボックスに入れるための独自の CD-KEY を作成しようとしています。
ただし、ソフトウェアの販売は行っておりません。犯罪・医療目的のDNA採取キットを販売しております。ユーザーは CD-KEY が添付された唾液採取キットを郵送で受け取り、その CD-KEY を使用してウェブサイトでアカウントを作成し、結果を取得します。テストの結果は CD-KEY にリンクされます。これが、結果を患者に結び付ける唯一の方法です。したがって、失敗しないことが重要です:)
要件の 1 つは、誰かが間違った CD-KEY を入力し、それが他の誰かのキット用に承認され、それによって 2 つのキットが混同される可能性がないように、CD-KEY のリストを十分に「分散」する必要があることです。これにより、数千ドルの責任が発生する可能性があります。
たとえば、
00001
00002
00003のような数字の連続ではありません
...
誰かがキット 00002 を受け取ったが、誤ってそれを 000003 として登録した場合、その結果は他の誰かと照合されます。つまり、クレジット カード番号のようなものでなければなりません... 有効なシーケンスが入力されない限り、有効な番号がランダムにヒットする可能性は 100 万分の 1 です...
また、毎年 50,000 を超えるキットをさまざまなプロバイダー (アルゴリズムを使用して独自の CD-KEY を生成するプロバイダー) に販売しているため、以前に発行されたすべての CD-KEY のリストを維持して重複をチェックすることはできません。アルゴリズムは一意の CD-KEY を生成する必要があります。
また、入力したコードが無効な場合にユーザーに通知できるように、クイック チェック アルゴリズムを使用して CD-KEY が有効であることを確認する機能も必要です。これにより、私が信じている多くのハッシュまたは MD5 アルゴリズムが除外されます。また、128 ビットにすることはできません。コンピューターの画面に入力するのに誰が時間をかけるのでしょうか。
これまでのところ、最終的な CD-KEY 構造は
(4 文字の製品コード) - (4 文字の再販業者コード) - (12 文字の一意の検証可能な CD-KEY)になると私が考えていたもの
です。384A - GTLD - {4565 - FR54 - EDF3}
KEYS の一意性を確保するために、ソースの一部として現在の日付 (20090521) を含めることができます。一意のキーを 1 週間に 1 回以上生成することはないため、この値は、一意の初期値を得るために頻繁に変更されます。
一意のキーを生成するためにどのようなアルゴリズムを使用できますか?