python - Python 的快速 RC4 密码流?

标签 python encryption rc4-cipher

我正在尝试编写一个需要大量加密强度伪随机字节的应用程序。

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/

相关文章:

python - 如果 Dataframe 中的行包含某些字符串删除

python - 输入每个命令后如何在python pdb中显示 'l'的输出

python - 如何使用 pybind11 提供默认枚举值?

c++ - 使用 FileSource 加密内容后无法删除文件

encryption - 为 16 位系统编写 RC4

java - java中的rc4加密和解密

python - 如何使用带有 Python 的 Google Drive API 覆盖文件?

python - 使用数字加密文本

c++ - C 中的 OpenSSL : after second decryption in application run, 结果的前 16 个字节是垃圾

java - 通过 UDP 发送 byte[] 导致 byte[] 值发生变化