1

「正直な人を正直に保つ」ための簡単なライセンス キー システムを作成しています。特に厳しい暗号化については気にしません。

デモの制限に不満を感じた場合、彼らは私の登録 Web サイトにアクセスし、料金を支払い、メールアドレスを教えてくれます。私は彼らにライセンスキーを渡します。

私は物事を本当にシンプルに保っています。

license_key = md5(email + "Salt_String");

PHP と C# の関数で同じアルゴリズムを実行し、同じキーを取得します。

問題は、これらの関数の出力が次のような 32 文字の文字列になることです。

A69761CF99316358D04771C5ECFCCDC5

これは、覚えたり入力したりするのが難しい可能性があります。はい、コピー/貼り付けについては知っていますが、有料のすべての顧客がソフトウェアのロックを解除するのを本当に簡単にしたいと考えています。

どうにかしてこの長い文字列を短い文字列に変換する必要がありますか?

最初の 6 桁のみを使用するとします。A69761

その中には明らかに暗号衝突がはるかに多くありますが、実際の使用ではまったく問題になるでしょうか?

物事をより人間が読める/入力できるようにするための他のアイデアはありますか?

4

2 に答える 2

3

左に 6 ~ 10 個の記号があれば十分です。とにかく、ユーザーはコードを推測することができず、簡単に入力できます。また、各ライセンスをサーバーに登録することをお勧めします。ユーザーが本当に正直で、他の人にライセンス キーを渡していないことを確認します。

于 2011-01-12T10:07:33.367 に答える
1

私の経験では、ユーザーに 30 文字のコードを入力するか、コピーして貼り付けるように求めることは、実際に顧客の不満につながります。それほど難しいというわけではありません。それは単に人々が気にしないハードルです。

私がビジネスで使用した解決策は、試用版と購入済みのダウンロードを別々にすることです。ライセンス コピーを取得するには、顧客は電子メール アドレスと短いユーザー ID をダウンロード フォームに入力します。メールアドレスのみを入力すると、ユーザーIDが自動で再送信されます。これについては質問していませんが、顧客が必要とするコードを自動的に検索するシステムは、単純なシステムを持つことよりもさらに重要です。ダウンロード システムは、データベースでユーザーの詳細を検索し、ユーザーのライセンスが埋め込まれた SetupSomeProductCustomerName.exe を提供します。このセットアップでは、それ以上の識別やサーバー接続を必要とせずに、顧客のライセンス コピーをインストールします。

このシステムは私たちにとって非常にうまく機能しています。お客様は、バックアップするファイルが 1 つだけで、シリアル番号を失うことなく、将来ソフトウェアを再インストールできるようになります。

とはいえ、一方向ハッシュを使用するシステムを使用する場合は、より小さなハッシュを生成するアルゴリズムを使用してください。たとえば、CRC-32 は 8 桁の 16 進数になります。

ハッシュが暗号的に安全であることには意味がありません。クラッカーは、あなたのコードを調べて、電子メール アドレスを変更するコード ブロック全体をライセンス キーにコピーし、それをキー生成に貼り付けるだけです。次に、任意の電子メール アドレスのライセンス キーを生成できます。ハッシュアルゴリズムがどれほど複雑であっても、彼らはそれを行うことができます.

これを防ぎたい場合は、公開鍵暗号化を使用する必要があります。これにより、キーが長すぎて入力できなくなります。その方法を使用する場合、長いキーを貼り付けて顧客を困らせるか、個別のキー ファイルを使用するか、前述の個人用ダウンロード システムを使用してください。

于 2011-01-12T12:35:17.697 に答える