我正在尝试编写一个需要大量加密强度伪随机字节的应用程序。
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,但现在对于这个简单的项目来说,这是一个很大的学习曲线。
最佳答案
我相信 PyCrypto 有一个 RC4 实现,检查一下 here
关于python - Python 的快速 RC4 密码流?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16553280/