大整数难于分解的原因
- 格式:doc
- 大小:19.50 KB
- 文档页数:5
大
整
数
难
于
分
解
原
因
报
告
计算机科学与技术学院
网络工程1101
1108020108
杨万章
2014.5.28
数学中,整数分解(素因数分解)问题是指:给出一个正整数,将其写成几个约数的乘积。例如,给出45这个数,它可以分解成32
×5。根据算术基本定理,这样的分解结果应该是独一无二的。这个问题在代数学、密码学、计算复杂性理论和量子计算机等领域中有重要意义。完整的因子列表可以根据约数分解推导出,将幂从零不断增加直到等于这个数。例如,因为45= 32×51,45可以被30 ×50,30×51,31×50,31×51,32×50,和32×51,或者 1,5,3,9,15,和 45整除。相对应的,约数分解只包括约数因子。
1. 整数分解算法及复杂度分析
在对n 的因式分解方法中,通常的方法是采用数论中的因式分解方法。目前,比较常用因子分解方法有试除法、Pollard’s rho 分解法、Pollard’s P-1 分解法、Dixon 分解法、
连分数分解法、二次筛法、多多项式二次筛法、数域筛法(NFS)和椭圆曲线法等试图用这些方法解决减小 n 的因式分解算法的复杂度问题。以下是这些算法的时间复杂度[4]:
试除法:O ( p (log n )2) ;
Pollard’s rho 分解法: () ()2og Op n;
Pollard’s P –1 分解法:O ( B log B (log n )2) ,其中,B 为设定光滑界;
椭圆曲线法:O (exp(( 2 + o (1))(ln p )1/ 2(lnln p )1/ 2))
基于完全平方数的分解算法(Dixon 分解法、连分数分解
法、二次筛法、多多项式二次筛法、数域筛法(NFS) 的最小复杂度为:O (exp((64/9)1/3lnp )1/3(lnln p )2/3)) 。
其中,试除法、Pollard’s rho 分解法、Pollard’s P-1 分解法和椭圆曲线法对于分解相对较小的素因子效率较高。基于完全平方数的分解算法对于分解大整数 n 的效率相对较高。当前使用数域筛法(NFS)
分解n 的最好结果是分解RSA-200 ,该数具有200 个十进制位,663个二进位。 实际上,在对这些算法进行相应的算法设计时,对 n
的素因子特征都有一定针对性,如Pollard’s rho 分解法、Pollard’s
P-1 分解法等,如果n 的素因子是强素数时,就会增加分解的难度。而其他算法也对n 的不同素因子特征和不同类型的n ,分解效率差别也很大。另外,一些算法的构造对于分解效率具有不确定性,如果构造方法不当,就会响其分解效率。 本文给出一种分解n 的算法——判定算法。对该算法进行相应的数学证明和算法设计,计算算法的时间复杂度,并对n 的不同素因子特征与分解效率的关系进行分析研究。
2.判定算法的复杂度分析
定义 设n 为正整数,且存在 2 个正奇素数p 和q ,p ≤q ,使得n = pq。令c = q / p 称c 为n 的素因子特征。不难看出,c值越小,n 的最小素因子p 越大;c 值越大,p 越小。如果c值相对较大,使得n 的最小素因子p 相对较小,也使得在小于n 的数域内,含有 n
的平凡因子增加多。这样会使Pollard’s算法与基于完全平方数的分解算法分解几率大大增加。因此,n 的素因子特征c 的大小与一些分解算法的有效性存在着密切的联系,如果c 越小,会使这些分解算法的效率大大降低。然而,当c 值相对较小时,会使判定算法的算法效率相对提高。 当n 的素因子特征c 小于2 时,因为q <2 p ,
q –p <p ,以及算的Step3 的r ←r +2(y –x )+4 中y <q , x
>p ,所以y – x <q –p <p <x 。这样,2( y –x ) 的运算只要一次减法和移位运算;在判断计算r >x 至运算到r <x ,最多只需2 次减法和简单的比较运算。因此,每次运算的复杂度低于 O
(log n ) 。 当2 <c <3 ,可将算法的Step3 中y 递增2 ,y 递增4 ,即 ( ) ( ) ( ) 24 22 nx y r yx 4 = −+++−+,将算法改为 x ←x –2, y ←y +4, r ←r +2(y –2 x )+4 。当r >x 时,需要运算到r <x ,只需2 次左右的移位、减法和比较运算,其算法复杂度也为O (log n) 。以此根据c 的大小调整算法的Step3,当c 进一步增大时,会使算法的移位、减法运算次数有所增加,但当c相对较小时,通过调整算法Step3 的计算,可使每次运算的复杂度为 O (log n ) 。
对于分解n 的素因子,可以将小于 n 的区域划分为若干个的区间,在可能存在n 的最小素因子的区间上使用判定算法,使用多台计算机同时进行运算。如果很好地构造算法
的第三步,就可以降低算法的复杂度,使该算法的分解效率大大提高,也会使分解n 的几率大大增加。 3.结束语
本文在学习课文内容RSA 公钥加密体制中的公开密钥n 为2 个素数乘积的特性,用直接判定一个数最否为 n 的素因子算法——判定算法分解大整数。与试除法算法相比,省去了差别素数的计算过程,使算法复杂度低。在判定素因子的算法基础上,又进行了算法的优化设计,使得当n 的素因子充分大时,算法的时间复杂度降至O ( p log
n ) 以下。同时对n 的素因子特征与该算法的有效性关系,以及算法特点与RSA 的安全性等问题进行了分析研究。
参考文献:《RSA 密码分析中分解大整数的判定算法》
孙克泉(南开社区学院计算机系,天津 300100)