多数の暗号強度の疑似乱数バイトを必要とするアプリを作成しようとしています。
RC4 暗号はこれに最適です。軽量で、概念的に理解するのは簡単です。それで、仕様を取得し、Python で RC4 アルゴリズムを作成しました。
期待どおりに動作しますが、糖蜜のように遅いです。私の Core i7 2.2GHz では、アルゴリズムから約 1MB/秒しか得られません。
明らかに、Python の解釈された性質は、この種のタスクには最適ではありません。私の問題は、私が C コーディングに精通していないことです。C で行った最高のことは、Hello World のようなものと、ファイルの読み取りと書き込みに関するいくつかの実験です。いずれにせよ、Python-C API を使用するには、私は確かに C が得意ではありません。
私は .NET/C# を知っており、Windows で C# を使って同じアルゴリズムを書きましたが、60MB/秒を簡単に超えることができました。したがって、.NET の CLR はより最適化されています。ただし、Python アプリのターゲット プラットフォームは Unix/Linux です。
理想的には、最適化された RC4 暗号を Python アプリに組み込むためだけに、大量の中間層を通過する必要はありません。
RC4 は状態に依存するため、理想的にはクラスでこれを行います (これが、Python のみの実装で行った方法です)。
rc4 = RC4Encrypter()
rc4.seed(myKey) # seed the RC4 algorithm with bytes from string myKey
rc4.getRC4Bytes(1048576) # get the next 1MB of RC4 cryptostream bytes as a binary string
rc4.encryptWithRC4(myString) # encrypt myString's bytes with RC4 bytes using xor and return
何かアドバイス?C を学びたいと思っていますが、この単純なプロジェクトだけでも、今は大きな学習曲線です。