2

私は暗号化に不慣れで、さまざまなライブラリを見てきましたが、それらの多くは何年も前に作成されたものです。今日、Pythonで暗号化するために人々が何を使用し、C#.netで復号化するためにそれと連携するものがあるのか​​疑問に思っています。

pycryptoを調べましたが、読んだすべての投稿から、しばらく更新されていないようで(非常に人気があるように見えますが)、人々は.netで動作させるのに本当に苦労しています。 、

何か良い提案はありますか?.netとpythonのバージョンが利用できるライブラリがこのために存在するとは思いませんか?それは本当にAESのような信頼できる暗号化である必要があります。

4

2 に答える 2

4

将来的には、いくつかのテストを行ったところ、これが私の目的に完全に機能することがわかりました。Silverlightの例はC#に直接移植できます。

pycryptoとSystem.Security.Cryptographyを使用します

http://japrogbits.blogspot.co.nz/2011/02/using-encrypted-data-between-python-and.html

于 2012-06-27T02:21:18.870 に答える
0

データがどのように移動しているかわからないため、ここにいくつかのアドバイスがあります。

  1. クライアントとサーバーが双方向チャネルを介して通信する場合は、SSLを使用します。PythonにはSSLの優れた組み込みサポートがあり、C#にも優れたサポートがあると確信しています。これはセットアップが簡単で、stunnelを使用することもできるため、PythonおよびC#コードが暗号に触れる必要はありません。

  2. クライアントとサーバーが非同期で通信する場合(たとえば、電子メール、バッチジョブなど)、PGP/GPGを使用します。暗号化と復号化はGPGなどの外部プロセスにオフロードできるため、実装のコスト(言語に関係なく)は比較的最小限に抑えられ、PythonおよびC#コードは暗号化に触れる必要がありません。

これらのどちらもライブラリを使用する必要はありません。

どちらの場合も、公開鍵と秘密鍵のペアを作成する必要があります。通常の手順では、このキーペアをサーバーにインストールし、公開キーをクライアントにバンドルします。アプリに「クライアント」と「サーバー」の単純な区分がない場合は、別のことを理解する必要がありますが、暗号を間違えやすいため、最初に質問する必要があります。恐ろしく簡単です。

「AES」は使用しないでください。

ソースコードのどこかに「AES」と入力すると、間違った処理をしていることになります。

また、AESは使用しないでください。

AESは暗号であり、暗号化システムの構成要素の1つです。ビルディングブロックは必要ありません。完全なシステムが必要です。 SSLとPGP/GPGは完全なシステムです。AESを使用して独自のシステムを発明しようとすると、おそらくどこかで単純な間違いを犯すでしょう。これは非常に悪いことです。

実行可能な暗号化システムを作成することは困難です。脳外科手術のように、ナイフを手に取ることができる人はたくさんいますが、どこで切るかを知っている人はごくわずかです。

AESを使用すべきではないと言いましたか?

さて、AESを使用しないでください。

AESを回避することを忘れないでください。

于 2012-06-26T06:33:42.740 に答える