それは本当に難しい質問です。
私はそのようなことを実装したことはありませんが、ここに簡単な近似があります。
あなたの主な懸念は、ハッカーがあなたのアプリケーションが何をしているかを推測し、独自の結果を送信することです。
まず第一に、あなたのアプリケーションが大成功しない限り、私は心配しません。そのようなことをすることは非常に困難です。
暗号化は問題の解決にはなりません。おわかりのように、暗号化は途中でデータを保護するのに役立ちますが、データが暗号化される前のトランザクションのどちらの側も保護しません (これが主な脆弱性である可能性があります)。そのため、確実に暗号化すると、データは非公開のままになりますが、安全ではなくなります。
本当に心配なら、コードを難読化し、何が行われているかが完全にはわからないようにスコア システムを設計することをお勧めします。ここで、暗号化プロトコルからいくつかのものを借りることができます。次に例を示します。
- スコアがいくつかの数mであるとしましょう
- スコアに対して何らかのチェックを計算します (たとえば、CRC やその他の足元のシステムなど。実際、それを発明しただけであれば、どんなに不自由であってもうまく機能します)。
- リモートサーバーからユーザー (D) の秘密鍵を取得します (明らかに安全な接続を介して)。この鍵を知っているのはあなただけです。
- X=m^D mod n を計算します (n は公開鍵/秘密鍵アルゴリズムの公開モジュールです) (つまり、暗号化します:P)
ご覧のとおり、これは別の種類の難読化です。好きなだけその道を下ることができます。たとえば、X に最も近い 2 つの素数を検索し、それらを使用して CRC を暗号化し、それをサーバーにも送信して、CRC とスコアを別々に異なる暗号化方式で取得できます。
それを難読化と組み合わせて使用すると、ハッキングが困難になると思います。とはいえ、それもリバース エンジニアリングされる可能性がありますが、それはすべてハッカーの関心と能力に依存しますが... 真剣に、どのようなフリークがゲームの結果を変えるのにそれほどの努力を必要としますか? (すごいか何かでない限り)
最後のメモ
.NET の難読化ツール
Delphi/C++ の難読化ツール
アセンブラ用の難読化ツール (x86)