我正在尝试编写一个需要大量加密强度伪随机字节的应用程序。
RC4 密码将是理想的选择;从概念上讲,它轻巧且易于理解。所以,我得到了规范并用 Python 编写了一个 RC4 算法。
它完全按预期工作,但是它像糖蜜一样慢。在我的 Core i7 2.2GHz 上,我只能从算法中获得大约 1MB/秒。
很明显,Python 的解释性质并不是最适合这类任务。我的问题是我不精通 C 编码——我用 C 做的最好的事情是一些 Hello World 的东西和一些文件读写的实验。不管怎样,我对 C 语言肯定不够好,无法使用 Python-C API。
我确实知道 .NET/C#,并且我在 C# 上的 Windows 中编写了相同的算法,并且我能够轻松地从中获得超过 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,但对于这个简单的项目来说,现在它是一个很大的学习曲线。