私が持っているのは、クライアント サーバー シナリオとペイロード (x) です。
- サーバーは x を生成し、暗号化します: enc(x)
- enc(x) がクライアントに送信されます
- クライアントはデータを復号化して x を取得します
ただし、強制しなければならない制限は次のとおりです。
- 暗号化キーと復号化キーは異なる必要があります
- クライアントは暗号化キーを持っていてはなりません
したがって、復号化するには公開鍵と秘密鍵の両方が必要であり、公開鍵を使用すると暗号化できるため、RSA は窓の外にあります。
したがって、目的は 2 つあります。クライアントがデータの一部を復号化して、それが既知のソースからのものであることを確認できるようにすることですが、クライアントが元のペイロードの独自の暗号化されたバージョンを作成できないようにすることです。
理想的には C# ですが、同様の言語の回答を受け入れることができます。
編集:復号化には秘密鍵のみが必要であり、両方の鍵は必要ではないことが通知されました-ただし、.NetのRSACryptoServiceProviderにこれを実行させる方法はないようです。