Ну что ж...
Когда пытаются вычислить трудоемкость алгоритма, то в формуле за N принимается, так сказать, мера входных данных. Это может быть число каких-то элементов, над которыми и производятся вычисления. Может быть число каких-то объектов (пар, троек и т.п. элементов). В случае с факторизацией за N нужно принимать не что иное, а именно длину этого числа, т.е. сколько цифр (знаков). Но никак не само это число! Поэтому такая формула трудоемкости, если там действительно N - само число - думаю, неправильна с позиций теории алгоритмов.
Но давайте посчитаем, что у нас получается с данной формулой. O большое - какой то множитель, который не имеет зависимости от N, а зависит от реализации алгоритма, архитектуры компьютера и т.д. Писали что, для 100-значного числа, компьютер работающий с GNFS справляется за несколько часов. За секунду процессор производит до 3 млрд процессорных инструкций, за 3 часа - примерно 30 триллионов. Если алгоритм хорошо написан, то обычно минимальные количества процессорных инструкций достигает 1000, на не самую простую операцию. Значит O большое равно, скажем 1000, и это довольно заниженная его оценка. Значит, при подстановке числа
, вместо N, в формулу
мы должны получить около 30 триллионов. Отсюда вытекает что множитель c, находящийся в показатели степени, (или (c+o(1))), равен примерно 1,2726. И формула приобретает окончательный вид,
Теперь, если подставим в нее вместо N,
, то получим нужные нам 30 триллионов инструкций процессора.
Пишут, что могут взломать 2-килобитные и даже 3-килобитные криптографические ключи, т.е. могут факторизовать 3-килобитные полупростые числа. Поэтому рекомендуется использовать 4-килобитные
и даже более. Но 3-килобитное число, примерно 1000-значное в десятичном представлении.
Для 1000-значного числа, мы получим число инструкций процессора, подставив в ту же формулу вместо N, число
Получаем, что для того чтобы факторизовать
, нужно
36 403 757 143 561 648 114 449 345 553 254 инструкций процессора.
Учитывая, что компьютер может выполнить примерно 3 млрд инструкций в секунду, мы получаем, что требуется около 10 000 квинтиллионов секунд, или 384 триллиона лет!
Если даже запустить на анализ 100 миллионов компьютеров (почти столько, сколько жителей в России), т.е. вся страна будет заниматься вычислениями, то потребуется около 4 миллионов лет! Надеятся что будет увеличение мощностей компьютеров в тысячи раз уже не приходится - многие пишут что закон Мура перестанет действовать уже к 2015 году, и размеры транзисторов не могут быть меньше 12-16 нанометров.
Значит, 4-килобитное число, никогда никто разложить не сможет в обозримом будущем и бояться нечего?
Если же смогут, то тогда следует считать что и 100-значные числа сейчас должны факторизовать не за несколько часов, а за доли секунды. Но и для этого случая, я могу посчитать время на факторизацию, скажем 8-килобитного числа, и получу еще большие временные результаты. Т.е. можно гарантированно раз и навсегда взять ключ достаточных размеров и никто его не взломает в ближайшие тысячелетия?