我正在尝试编写一个需要大量加密强度伪随机字节的应用。
RC4密码对此非常理想;它的重量轻,易于理解。所以,我得到了规范并用Python编写了一个RC4算法。
它完全按预期工作,但是,它像糖蜜一样慢。在我的Core i7 2.2GHz上,我只能从算法中获得大约1MB /秒的速度。
显然,Python的解释性质并不是最适合此类任务的。我的问题是我不熟悉C编码 - 我用C做的最好的是一些Hello World的东西和一些文件读写的实验。不管怎样,我对C使用Python-C API肯定不够好。
我知道.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,但对于这个简单的项目来说,这是一个很大的学习曲线。