Я пытаюсь написать приложение, которому требуется большое количество псевдослучайных байтов криптографической стойкости.
Шифр RC4 был бы идеальным для этого; это легкий и простой для понимания концептуально. Итак, я получил спецификацию и написал алгоритм RC4 на Python.
Он работает точно так, как ожидалось, но он медленный, как патока. На моем Core i7 2,2 ГГц я могу получить только около 1 МБ/с из алгоритма.
Ясно, что интерпретируемая природа Python не лучшим образом подходит для такого рода задач. Моя проблема в том, что я плохо разбираюсь в кодировании C - лучшее, что я сделал с C, - это некоторые вещи Hello World и некоторые эксперименты с чтением и записью файлов. В любом случае, я недостаточно хорошо разбираюсь в C, чтобы использовать API-интерфейсы Python-C.
Я знаю .NET/C#, и я написал тот же алгоритм в Windows на C#, и мне удалось легко получить из него более 60 МБ/с. Таким образом, среда CLR .NET намного более оптимизирована. Но целевой платформой для приложения 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, но сейчас это большая кривая обучения для этого простого проекта.