ライセンスキーの出力を純粋なMD5出力から一般的な「xxxx-yyy-zzzz」タイプコードに変更する必要がありますか?
-
10-10-2019 - |
質問
「正直な人を正直に保つ」ためのシンプルなライセンスキーシステムを作成しています。特に厳しい暗号化は気にしません。
彼らがデモの制限に悩まされた場合、彼らは私の登録ウェブサイトに行き、支払いをして、私にメールを送ってください。私は彼らにライセンスキーを与えます。
私は物事を本当にシンプルに保っているので、:
license_key = md5(email + "Salt_String");
同じアルゴリズムを実行して、同じキーを取得します。
問題は、これらの関数の出力が次のような32文字の文字列であることです。
A69761CF99316358D04771C5ECFCCDC5
覚えておくのは潜在的に困難です。はい、私はコピー/ペーストについて知っていますが、すべての有料の顧客がソフトウェアのロックを解除することを本当に簡単にしたいと思います。
どういうわけかこの長い文字列を短いものに変換する必要がありますか?
最初の6桁のみを使用しているとしましょう。 A69761
その点には明らかに、より多くの暗号化衝突がありますが、実際には重要なのでしょうか?
物事をより人間の読みやすい/型付け可能にするための他のアイデアはありますか?
解決
左6-10のシンボルで十分です - とにかくユーザーはコードを推測することができず、入力するのは簡単です。また、各ライセンスをサーバーに登録することもできます。ユーザーが本当に正直であり、他の人にライセンスキーを提供しなかったことを確認すること。
他のヒント
私の経験では、ユーザーに30文字のコードを入力またはコピー/貼り付けるように依頼すると、実際にイライラした顧客につながります。それがそれほど難しいというわけではありません。それは単に人々が気にしないハードルです。
私が使用したソリューション 私の事業 別々の試用版を用意し、ダウンロードを購入することです。ライセンスされたコピーを取得するために、顧客は電子メールアドレスに入力し、ダウンロードフォームの短いユーザーIDを入手します。電子メールのみを入力すると、ユーザーIDが自動的に再送信されます。これについては尋ねませんでしたが、顧客が必要とするコードを自動的に検索するシステムは、単純なシステムを持つよりもさらに重要です。ダウンロードシステムは、データベースでユーザーの詳細を調べ、ユーザーのライセンスが埋め込まれているsetupsomeproductcustomername.exeを提供します。このセットアップは、識別やサーバー接続を必要とせずに顧客のライセンスコピーをインストールします。
このシステムは私たちにとって非常にうまく機能しています。顧客は、バックアップするファイルが1つだけで、将来ソフトウェアを再インストールできることを確認するためにシリアル番号を失うことはありません。
とはいえ、一方向ハッシュを使用してシステムを使用する場合は、単に小さなハッシュを生成するアルゴリズムを使用するだけです。たとえば、CRC-32は8匹の16進数桁をもたらします。
ハッシュが暗号化的に安全であることには意味がありません。クラッカーは、単にコードを通り抜け、電子メールアドレスをライセンスキーに変異させるコードのブロック全体をコピーし、それをkeygenに貼り付けます。その後、メールアドレスのライセンスキーを生成できます。ハッシュアルゴリズムがどれほど複雑であるかに関係なく、彼らはそれを行うことができます。
これを防ぎたい場合は、公開キーの暗号化を使用する必要があります。その結果、入力するには長すぎるキーが作成されます。キーファイルを個別に、または上記で説明したパーソナライズされたダウンロードシステムを使用します。