データがどのように移動しているかわからないため、ここにいくつかのアドバイスがあります。
クライアントとサーバーが双方向チャネルを介して通信する場合は、SSLを使用します。PythonにはSSLの優れた組み込みサポートがあり、C#にも優れたサポートがあると確信しています。これはセットアップが簡単で、stunnelを使用することもできるため、PythonおよびC#コードが暗号に触れる必要はありません。
クライアントとサーバーが非同期で通信する場合(たとえば、電子メール、バッチジョブなど)、PGP/GPGを使用します。暗号化と復号化はGPGなどの外部プロセスにオフロードできるため、実装のコスト(言語に関係なく)は比較的最小限に抑えられ、PythonおよびC#コードは暗号化に触れる必要がありません。
これらのどちらもライブラリを使用する必要はありません。
どちらの場合も、公開鍵と秘密鍵のペアを作成する必要があります。通常の手順では、このキーペアをサーバーにインストールし、公開キーをクライアントにバンドルします。アプリに「クライアント」と「サーバー」の単純な区分がない場合は、別のことを理解する必要がありますが、暗号を間違えやすいため、最初に質問する必要があります。恐ろしく簡単です。
「AES」は使用しないでください。
ソースコードのどこかに「AES」と入力すると、間違った処理をしていることになります。
また、AESは使用しないでください。
AESは暗号であり、暗号化システムの構成要素の1つです。ビルディングブロックは必要ありません。完全なシステムが必要です。 SSLとPGP/GPGは完全なシステムです。AESを使用して独自のシステムを発明しようとすると、おそらくどこかで単純な間違いを犯すでしょう。これは非常に悪いことです。
実行可能な暗号化システムを作成することは困難です。脳外科手術のように、ナイフを手に取ることができる人はたくさんいますが、どこで切るかを知っている人はごくわずかです。
AESを使用すべきではないと言いましたか?
さて、AESを使用しないでください。
AESを回避することを忘れないでください。