1

私はクライアント/サーバー アプリケーションに取り組んでおり、2 つの間の通信は暗号化されています。クライアントが組み込まれており、CPU リソースが限られているため、RC2 暗号化を使用しています。System.Security.Cryptography.RC2CryptoServiceProvider.CreateDecryptor/CreateEncryptor メソッドを使用して暗号化クラスを作成しています。

私の問題は、メッセージを複数のパケットに分割するという TCP の傾向に起因しています。メッセージ全体が Socket.Receive() の 1 回の呼び出しで到着しない可能性があるため、送信パケットの最後にパケット区切り文字を含めて、受信側がパケットの終了場所を認識できるようにする必要があります (現在は 0x0D を使用)。ただし、RC2 暗号化はペイロードのどこかに 0x0D を作成することになり、受信側でパケットが完了したと解釈されます。この切り捨てられたパケットを復号化しようとすると、失敗します。

この種のことが通常どのように処理されるかについてのアドバイスはありますか? それとも、区切り文字として使用できる、RC2 暗号化で生成されないことが知られている文字だけでしょうか?

4

1 に答える 1

0

GregS の提案を使用して、暗号化されたパケットの前に長さヘッダーを付け、暗号化されたパケットの後にパケット区切り文字を付けてサニティ チェックを行いました。ありがとう!

于 2012-06-15T21:43:18.683 に答える