0

私は現在、Web ベースの製品管理プラットフォーム用のシリアル キー ベースのアクティベーション メカニズムを作成する方法を見つけようとしています (これは何よりも設計上の問題であるため、言語は問題ではありません)。 sold には、オンライン サポートに登録するためのライセンス キーがあります。

シリアル キー エンコーダー/デコーダー クラスを用意しました。これは AES 暗号化データを生成し、それを base32 エンコードして人間が読み取れるキーを返します。実際の製品コードを保持する必要があるかどうか、または何を暗号化するかを理解する必要があります。

また、エンコーダーはシリアルごとに異なる復号化キーも生成していますが、このアプローチが好きかどうかはわかりません。これと、たとえば各キーにソルトを使用することとのどちらが最適でしょうか? また、復号化キーとソルトはどこに保存すればよいですか? 現在のアプローチが有効な場合に備えて、アクティベーションキー、ソルト、または復号化キーについて、DB について考えていますが、これは正しいですか?

また、キーの長さを抑える必要があります。つまり、暗号化で特定の数の文字を渡すことはできません。アクティベーション キーは実際の製品データを保持する必要がありますか、それともアクティベーション キーが PK として機能する DB 上の一致する行を指し、そこから必要なものをすべて読み取る必要がありますか?

ご回答ありがとうございます。私の質問が大雑把すぎないことを願っています。私はこの特定のトピックに比較的慣れていないので、ご容赦ください。他の質問を読みましたが、アクティベーション キーを Web ベースの環境に実際に保存するという問題に取り組んでいるようには見えません。

4

1 に答える 1

0

暗号化はまったく必要ないように思えます。

強力なランダム バイトを作成し (たとえば、/dev/urandom を使用)、それをアクティベーション キーとして使用できます。

64 ビットのランダム性 (urandom から 8 バイトを読み取る) のようなもので、おそらく十分です。衝突なしで約 2^32 の「アクティベーション キー」が得られるからです。もちろん、特定の状況に適していることを確認してください。

たとえば、アクティベーション キーは次のようになります (16 進数でエンコードされ、"-" で結合されています)。

28d7-59bf-0a29-b482
于 2012-09-05T10:02:58.750 に答える