5

ユーザーが製品を登録するために使用する標準のソフトウェア ボックスにある通常の 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 回以上生成することはないため、この値は、一意の初期値を得るために頻繁に変更されます。

一意のキーを生成するためにどのようなアルゴリズムを使用できますか?

4

5 に答える 5

6

<providername>000001などの文字列を作成<providername>000002し、公開鍵で暗号化します。これが、ユーザーが入力する「CD-KEY」です。秘密鍵を使用して CD-KEY を復号化し、復号化すると、有効なプロバイダー名を持つ有効な文字列が得られることを検証します。

于 2009-05-21T16:48:48.247 に答える
1

私は最終的にこの形式のCDキーに落ち着きました

<TIMESTAMP>-<incremented number>-<8 char MD5 hash>-<checksumdigit>

mod 11 ISBN チェックサム数字アルゴリズムを使用しました。

于 2011-02-04T05:36:10.217 に答える
1

ソフトウェア保護のためにSeriousBit Ellipterリンクを使用していますが、毎週一意のキーのグループを生成し、ライブラリを使用してWebサイトに入力したときにキーの有効性を検証できる理由がわかりません. オプションのサービスをキーにエンコードして、キーからサンプルを処理する方法を制御することもできます (サービス レベルが異なる場合)。

そもそも暗号化されたキー生成方法を使用しており、比較的安価であるため、一見の価値があると言えます。

于 2009-05-21T11:16:58.900 に答える
-1

GUID を生成し、それに乱数を連結します。GUID は一意であることが保証されており、乱数によって誤ってコードをヒットする可能性が低くなります。GUID を変更しないでください。一意性が損なわれる可能性があります。

http://msdn.microsoft.com/en-us/library/aa475087.aspx

于 2009-05-21T12:04:36.573 に答える