[解決済み】ソフトウェアのライセンスキーを生成して検証する方法は?
2022-04-04 11:16:06
質問
現在、ある製品(C#で開発)の開発に携わっています。この製品は無料でダウンロードおよびインストールできますが、非常に限定されたバージョンです。すべての機能を利用するためには、ユーザーはライセンス料を支払ってキーを受け取らなければなりません。このキーをアプリケーションに入力することで、フルバージョンのロックを解除することができます。
ライセンスキーを使うのは普通だと思うのですが、どうなんでしょう?
- 通常、どのように解決するのですか?
- キーを生成し、それをアプリケーションで検証するにはどうすればよいですか?
- また、キーがインターネット上で公開され、ライセンスを支払っていない他の人に使用されるのを防ぐにはどうしたらよいですか(基本的にキーは彼らのものではありません)。
また、キーとアプリケーションのバージョンを関連付けることで、機能バージョンアップの際に新しいキーに課金することも可能になると思うのですが。
このシナリオで他に考えるべきことはありますか?
解決方法は?
警告:ユーザーが海賊行為をするのを防ぐことはできませんが、正直なユーザーが正しいことをするのを容易にすることだけはできます。
ユーザーごとに特別なビルドをしないとして、では。
- 製品用のシークレットキーを自分で生成する
- ユーザーの名前を取る
- ユーザー名と秘密鍵を連結し、SHA1などでハッシュ化します。
- SHA1ハッシュを英数字の文字列として解凍します。これが各ユーザーのプロダクトキーです。
- プログラム内で、同じようにハッシュ化し、プロダクトキーと比較します。等しければ、OK。
でも、繰り返す。 海賊版を防ぐことはできません。
最近、この方法は暗号学的にあまり健全ではない、という記事を読みました。しかし、この解決策はすでに弱いです( ソフトウェア自体が秘密鍵をどこかに入れなければならないので ) ので、この発見がこの解決策を限りなく無効にするとは思えません。
ただ、これだけは言っておかないといけないと思ったのは、ここから何かを導き出そうと考えている人は、要注意だということです。
関連
-
[解決済み】C#で四捨五入する方法
-
[解決済み] [Entity Framework 4.1でエンティティに関連オブジェクトを追加する際に、エンティティオブジェクトをIEntityChangeTracker.の複数のインスタンスから参照できない。
-
[解決済み] 保護レベルによりアクセス不能になりました。
-
[解決済み】ソケットのアドレス(プロトコル/ネットワークアドレス/ポート)は、通常1つしか使用できない?
-
[解決済み] 乱数(int)を生成する方法を教えてください。
-
[解決済み] Microsoft Officeをインストールせずに、C#でExcel(.XLSおよび.XLSX)ファイルを作成するにはどうすればよいですか?
-
[解決済み] async」と「await」の使い方とタイミング
-
[解決済み] ランダムな英数字の文字列を生成するにはどうすればよいですか?
-
[解決済み] 文字列からストリームを生成するにはどうすればよいですか?
-
[解決済み】ソフトウェアのライセンスキーはどのように生成されるのですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】エラー。「戻り値を変更できません」 C#
-
[解決済み】Ajax処理で「無効なJSONプリミティブ」と表示される件
-
[解決済み】C#はJavaのcharAt()と同等?)
-
[解決済み】Unity 「関連するスクリプトを読み込むことができません」「Win32Exception: システムは指定されたファイルを見つけることができません"
-
[解決済み】5.7.57 SMTP - MAIL FROMエラー時に匿名メールを送信するためにクライアントが認証されない
-
[解決済み] [Solved] .NETでスレッドの終了を待つには?
-
[解決済み】Unityでゲームオブジェクトのすべての子をループスルーして破壊する方法?
-
[解決済み】画像のペイントにTextureBrushを使用する方法
-
VSでscanfエラーを恒久的に解決するには、ソースファイルを作成し、自動的に#define _CRT_SECURE_NO_WARNINGS 1を追加してください。
-
[解決済み] Pythonのコードをユーザーに読まれないようにするにはどうしたらいいですか?