私は現在、非常に制限されたバージョンではありますが、無料でダウンロードしてインストールできる製品 (C# で開発) の開発に携わっています。すべての機能にアクセスするには、ユーザーはライセンス料を支払い、キーを受け取る必要があります。そのキーをアプリケーションに入力すると、フル バージョンが「ロック解除」されます。
このようなライセンス キーを使用するのは普通のことなので、疑問に思うことがあります。
- それは通常どのように解決されますか?
- キーを生成し、アプリケーションで検証するにはどうすればよいでしょうか?
- また、キーがインターネット上で公開され、ライセンス料を支払っていない他の人によって使用されるのを回避するにはどうすればよいでしょうか (基本的に「自分の」キーではないキー)。
何らかの方法でキーをアプリケーションのバージョンに結び付けて、機能バージョンで新しいキーに対して課金できるようにする必要があると思います。
このシナリオでは他に何か考慮すべきことはありますか?
ベストアンサー1
注意: ユーザーによる著作権侵害を防ぐことはできませんが、正直なユーザーが正しいことを行いやすくなるだけです。
各ユーザーに対して特別なビルドを実行したくない場合は、次のようになります。
- 製品の秘密鍵を自分で生成する
- ユーザー名を取得する
- ユーザー名と秘密鍵を連結し、(例えば)SHA1でハッシュする
- SHA1ハッシュを英数字の文字列として解凍します。これが個々のユーザーの「プロダクトキー」です。
- プログラム内で同じハッシュを実行し、プロダクト キーと比較します。等しい場合は OK です。
しかし、繰り返しますが、これでは海賊行為を防ぐことはできません
最近、このアプローチは暗号的にはあまり健全ではないという記事を読みました。しかし、このソリューションは既に脆弱です (ソフトウェア自体に秘密鍵をどこかに含める必要があるため)。そのため、この発見によってソリューションが無効になるとは考えられません。
ただ、これについては言及しておくべきだと思いました。このことから何か他のものを得ようと考えている場合は注意してください。