«

»

Июн 08 2012

Обновление модуля RSA-шифрования в нашем фреймфорке

Модуль RSA-шифрования нашей библиотеки CFW (CatFrameWork) был разработан более 2-х лет назад и с тех пор не использовался. Мне достоверно неизвестно когда в него закралась ошибка (тогда еще в библиотеку не ввели юнит тесты с их обязательной проверкой перед каждым комитом в SVN) однако генерацию ключей не работала и падала с исключением непонятной природы.Сейчас же, при работе над системой обновления мне потребовалось генерировать RSA-ключи и пришлось заняться поиском ошибки.

Начав разбираться в проблеме понял, что с ходу её не решить и придётся перелопачивать всё и вся. Раз уж такое дело, решил попутно провести профилирование кода и оптимизацию алгоритмов: во первых реализовать умножение Карацубы и быстрое возведение в квадрат, а во вторых реализовать умножение по модулю по методу Монтгомери (которые в своё время небыли реализованы из-за спешки).

Смотреть на свой старый код не было никаких сил и всё кончилось тем, что я переписал всё с 0 за 42 часа. Внедрение указанных алгоритмов ускорило библиотеку на 50% и профилирование asm-кода еще на 10%. Итого 60% прироста. Теперь наша реализация быстрее OpenSSL примерно на 10-15%, что не может не радовать (т.к. старался я не зря).

Добавить комментарий