Быстрый поток шифров RC4 для Python?

Я пытаюсь написать приложение, которое нуждается в большом количестве псевдослучайных байтов криптографической силы.

Шифр RC4 был бы идеальным для этого; это легкий и простой для понимания концептуально. Итак, я получил спецификацию и написал алгоритм RC4 на Python.

Он работает точно так, как ожидалось, но медленно, как патока. На моем Core i7 2.2 ГГц я могу получить только около 1 МБ / с из алгоритма.

Понятно, что интерпретируемая природа Python не подходит для такой задачи. Моя проблема в том, что я не очень хорошо разбираюсь в C-кодировании - лучшее, что я сделал с C, это некоторые вещи Hello World и некоторые эксперименты с чтением и записью файлов. В любом случае, я, конечно, недостаточно хорош в C, чтобы использовать API-интерфейсы Python-C.

Я знаю.NET/C#, и я написал тот же алгоритм в Windows на C#, и я смог легко извлечь из него более 60 МБ / с. Так что.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, но сейчас для этого простого проекта это большая кривая обучения.

1 ответ

Решение

Я считаю, что PyCrypto имеет реализацию RC4, проверить это здесь

Другие вопросы по тегам