RSA получилось, но тормозит.
Получилось написать RSA на Basic, вот оно:
Однако тормозит. Кодирование серийника происходит быстро, за секунду, а вот декодирование медленно, статистика:
На 256-битном ключе – 2 секунды, быстро, но ключ слабый.
На 512-битном ключе – 40 секунд.
На 400-битном ключе – 10 секунд.
Поэтому я озабочен тем, чтобы найти DLL, которая будет делать расчет RSA-ключа.
Если бы у меня была программа на .NET, я бы просто использовал тип BigInteger, ведь по сути, все что требуется, это возвести шифруемое число в степень публичного ключа и разделить на публичный модус. Но степень и модус - огромные числа.
Может кто знает библиотеку DLL, которую можно подрубить для кодирования приватным/декодирования публичным на RSA?
По поводу формы прокомментирую, что я извлекаю из PEM-файла с помощью OpenSSL текстовое описание ключа RSA, далее оттуда получаею публичную и приватную экспоненту и модус. Прикольно, че.
Только вот операции с длинными целыми числами реализовано в используемой мною библиотеке на VB через работу со строками, т.е. жутко медленно.
Вот для справки информация о ключах:
Хороший анализ защиты, обеспечиваемой определенной длиной модуля, приведен в
описании модуля дискретного логарифма Rivest, но то же можно применить и к алгоритму
RSA. В более позднем обзоре защиты, предлагаемой ключами RSA различной длины защита
анализируется на основе методов разложения на множители (факторинга), существовавших в
1995 и перспективах их развития, а также рассматривает возможность привлечения больших
вычислительных ресурсов по информационным сетям. Проведенная в 1997 году оценка
показала, что 512-битный ключ RSA может быть вскрыт (факторингом) за $ 1,000,000 и
восемь месяцев. В 1999 году 512-битный ключ был вскрыт за семь месяцев и это означает,
что 512-битные ключи уже не обеспечивают достаточную безопасность за исключением
очень краткосрочных задач безопасности.
В настоящее время Лаборатория RSA рекомендует для обычных задач ключи размером 1024
бита, а для особо важных задач – 2048 битов (например, для главного Мастера
Сертификатов).
Некоторые недавно введенные стандарты устанавливают для общих задач минимальный
размер ключа 1024 бита. Менее ценная информация может быть надежно зашифрована
ключом 768-битной длины, поскольку такой ключ все еще недосягаем для всех известных
алгоритмов взлома. Для оценки уровней безопасности различных размеров ключей можно
использовать модель предлагаемую Lenstra и Verheul.