通常阅读:
&#34;通过NFS算法计算 n 所需的时间是 exp(... 公式与ln(n) ...)< /强>&#34;
但我无法找到这个公式所指的时间单位? 真的是时间吗?还是运营数量?
由于
答案 0 :(得分:0)
通常,算法的运行时间以运算量给出。
但是大多数时候,如果理论家谈论算法的复杂性,他们会谈论O
- 符号(见https://en.wikipedia.org/wiki/Big_O_notation)。
在O
中 - 符号常量被忽略,因此O(1000n)
的运行时间与O(n)
相同,如果输入大小为n
,则仅涉及算法的运行时间变得越来越大了。
有关操作复杂性的更详细定义,理论家使用图灵模型(https://en.wikipedia.org/wiki/Turing_machine)。
答案 1 :(得分:0)
在NFS为“数字字段筛”的情况下(将一些大整数分解为素数因子的方法)n
通常是要考虑的数字。例如:
启发式地,它将整数n(由⌊log2n⌋+ 1位组成)的复杂性形式为
- exp((sqrt3(64/9)+ o(1))*(ln(n))^(1/3)*(ln(ln(n)))^(2/3)
...注意log_2(n)是n的二进制表示中的位数,即算法输入的大小
启发式地,它为整数n分解的复杂性具有以下形式:
- exp((1 + o(1))*(32/9 * ln(n))^(1/3)*(ln(ln(n)))^(2/3)
使用这种复杂性的用户可能会尝试使用GNFS / SNFS来计算一些巨大的N的时间,以估计使用比N大2倍的因子来计算更大的M需要多长时间,或者甚至更大的L是4倍的位数。
例如,有RSA Factoring Challenge能够考虑RSA-768 - 数字如此之大以至于需要使用768位(二进制数字)来编写它(232位十进制数字)。许多计算机在2年内It was factored,计算的总时间是单个2.2GHz“Vendor 2”PC的2000年工作。现在使用的是1024位(也是2048位)的RSA编号,您可以在公式中使用768和1024作为ln(n)
的值(二进制对数是写入数字加o所需的数字或二进制数字( 1) - 1)的小事。没有计算,但是做因子768的人说1024位更安全:
https://eprint.iacr.org/2010/006.pdf 768位RSA模数的因式分解。版本1。4,2010年2月18日
2009年12月12日,我们通过数字现场筛分(NFS,[20])计算了768位,232位数字RSA-768 ...因此,1024位RSA模数的因数约为一千时间更难,768位RSA模数比512位模数难以计算数千倍。