基于Knuth与Karatsuba乘法的大整数乘法研究

来源 :安徽理工大学学报·自然科学版 | 被引量 : 0次 | 上传用户:aiyis88
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  (安徽理工大学计算机科学与技术学院,安徽淮南232001)
  摘要: 在RSA、DiffieHellman密码系统的算法中都要用到大整数乘法算术。介绍了Knu th经典乘法、Karatsuba乘法以及它们的计算时间复杂性,在此基础上提出了一个新的大整 数乘法技巧,并且在理论上和实践上被证明是有效的。实验结果也显示改进的大整数乘法算 法在实现大整数乘法运算时具有更高的效率。
  关键词:Knuth乘法;Karatsuba乘法;大整数乘法;分治法
  中图分类号:TP301.6文献标识 码:A[WT]文章编号:16721098(2008)02006703
  
  Research on Large Integer Multiplication Based on Knuth and
  Karatsuba Multiplication
  HAN Meng,FANG Xianjin,GUO Yuxiu,LI Tao
   (School of Computer Science and Engineering,Anhui University of Science and Tec hnology,Huainan Anhui 232001,China) Abstract:Algorithms in cryptosystem such as RSA and DiffieHellman require larg e integer multiplication. In the paper Knuth classical multiplication, Karatsubamultiplication and their time complexity were presented, on the basis of whicha new large integer multiplication trick was put forward and proved available intheory and practice. The experiment showed that the improved multiplication alg orithm is more efficient in implementation of large integer multiplication.
  Key words:Knuth multiplication;Karatsuba multiplication;large integer multipl ication;divide and conquer
  
  对大多数的数论问题并且包括象RSA、ECC等公钥密码系统的算法中,大整数乘法是其中的基 本操作。 关于大整数乘法算术的文献有很多, 例如有Karatsuba乘法、 Toom乘法,快速傅 立 叶变换技巧,Scho[DD(-*2/3]..nhageStrassen技巧,经典的Knuth 乘法等[17]。
  大多数乘法运算的技巧都是利用“分治法”工具:将一个大的乘法问题减小为一组较小的乘 法问题,但是一直用同一个单一的方法进行递归到小问题的做法被认为是一个错误的选择。 因为:① 虽然有很多乘法运算的技巧,但是没有一种技巧适用于所有的情况, 在操作数长 度不同的情况下, 不同的乘法技巧所产生的效率是不一样的, 所以应根据乘法运算中的 操 作数长度的不同选择不同的算法; ② 通常情况下,最佳的乘法运算算法应能在递归的不同 层次使用不同的方法。
  文章的主要目标是对Karatsuba算法进行改进,试图找出这样一个条件并加以证明,当满足 这个条件时基于分治法的Karatsuba乘法被反复递归地调用,当不满足这个条件时,使用经 典的Knuth乘法进行运算。
  1标记
  文中所有的大整数都以b进制表示, 基本的算术运算包括两个以b进制表示的单精度整 数的加、 减、 乘、 除。 用b进制表示一个正整数p通常写成 p=(u1u2…un),其中的单精度整数ui (1≤i≤n)称为数字,并且0≤ui≤b-1 。例如,如果b=232=0x100000000,那么0≤ui≤0xffffffff(1≤i≤n ),则整数(ffffffffffffffff)b有两位数字。
  2经典的Knuth乘法及计算时间
  若p,q是b进制表示的非负整数,p=(u1u2…un)b, q=(v1v2…vm)b,它们的乘积w可表示成w=p•q=(w1w2…wm+n)b,用经典Knuth乘法[8] 计算w的算法可表示如下
  step1:w1,w2,…,wm+n←0,j←m;
  4对大整数乘法的改进
  优化大整数乘法的方法是,首先利用分治法递归地调用Karatsuba乘法去减小乘法的规模, 当乘数的长度达到某一个级别时,使用经典的Knuth乘法进行剩下的乘法运算。
  定理1存在这样的n,使得经典的Knuth乘法的计算时间 小于Karatsuba乘法。
  证明:设T1(n),T2(n)分别表示经典的Knuth乘法和Karatsuba乘法的计算时间,根 据前面的分析可以得到
  T1(n)=n T2(n)=9•nlog23-10n
  肯定存在这样的n满足T1(n)≤T2(n),也就是n2≤9•nlog23-10n <9•n
  也就是说当n<256时,经典的Knuth乘法的效率要高于Karatsuba乘法。
  定理2根据以下策略大整数乘法的效率是最高的:如果n> 16(n=2k),递归地调用Karatsuba乘法,当n=16时递归调用返回(递归出口), 调用经典的Knuth乘法计算两个较小整数的乘积。
  证明:设T(n)表示Karatsuba乘法的计算时间,假设如果n>m时Karatsuba乘法被递 归地调用,否则经典的Knuth乘法被调用。因此有
  T(n)=[JB({]m n=m3T(n/2)+5n,n>m[JB)]令n=2k,h(k)=T(n)=T(2k) ,那么T(n)能写成如下形式
  h(k)=3h(k-1)+5•2k=3(3h(k-2)+5•2k-1)+5•2k=…=3k-ih(i)+ 5•3k-(i-1)•2i-1+…+5.30•2k
  令 m=2i
  h(k)=[SX(]4i+10•2i[]3i[SX)]•nlog23-10n
  再令f(i)=[SX(]4i+10•2i[]3i[SX)], 函数f(i) 有最小值,当i=[JB([][S X(]log2(10log2[SX(]2[]3[SX)])-log2(log2[SX(]4[]3[SX)])[]log22-log2 3[SX)][JB)]]=4时,也就是当i=4时,m=2i=16,T(n)最小,最小值为
  Tmin(n)=[SX(]416[]81[SX)]nlog23-10n=O(nlog23 )
  5实验结果和结论
  目前大多数计算机的字长是32并且大多数C语言的编译器都支持对INTEL MASM指令的调用, 因此本文中一个单精度整数是用232进制表示的。 如果想要计算两个32 bit正整数的乘积, 可以调用下列的汇编代码, 以加快运算速率, 这些代码可以被认为 是一个基本操作,其时间复杂度为O(1)[10]。
  //Computes p = (p1p0) = x * y.…
  --asm{
  mov eax, x
  xor edx, edx
  muly
  ; Product in edx:eax
  mov ebx, p
  mov dword ptr [ebx], eax
  mov dword ptr [ebx+4], edx
  }
  将经典的Knuth乘法、Karatsuba乘法以及改进的大整数乘法的计算时间进行比较(见表1), 其中Digits是以232进制表示的乘数的长度,测试环境是AMD Athlon CPU 1.1GHz, 25 6M RAM, Windows XP OS, MS Visual C++ 6.0编译器。
  表1三种乘法的计算时间比较s
  Digits(232进制)[]Knuth[]Karatsuba[]改进的乘法2560.030.030.015120.040.110.011 0240.170.3810.052 0480.7210.9610.134 0962.7342.8740.3818 19210.9668.3221.141
  表1显示Karatsuba乘法的效率在实际中比经典的Knuth乘法要低,这与理论上是不一致的, 原因是Karatsuba乘法涉及到大量的递归调用,在此过程中要花费大量的时间进行内存的请 求与释放。改进的乘法利用了Karatsuba乘法和经典的Knuth乘法的优点:如果用232 进制表示的乘数的长度大于16时,Karatsuba乘法被不断地递归调用,而当长度是16时经典 的Knuth乘法被调用用于计算两个较小整数的乘积。从表1也可看出,改进的大整数乘法算法 比Knuth乘法和Karatsuba乘法明显地减少了计算时间。
  
  参考文献:
  [1]R L RIVEST, A SHAMIR, L ADLEMAN. A Method for Obtaining Digit al Signatures and PublicKey Cryptosystems[J].Communications of the ACM,1978 .21(2) :120126.
  [2]MICHAEL ROSING.Implementing Elliptic Curve Cr yptography[M]. Greenwich: Manning Publications Co,1999:314320.
  [3]ANATOLY A,KARATSUBA,Y OFMAN.Multiplication of Multidigi t Numbers on Automata[J].Soviet Physics Doklady,1963:595596.
  [4]DAN ZURAS.On Squaring and Multiplying Large Integers[M]. AR ITH-11: IEEE Symposium on Computer Arithmetic, 1993:260271.
  [5]E ORAN BRIGHAM.The fast Fourier Transform and its Applicati ons[M]. New Jersey :Prentice-Hall, Englewood Cliffs, 1988:232242.
  [6]A SCHO[DD(-*1/3]..NHAGE,V STRASSEN.Sch nelle Multiplikation Groβer Zahlen[J].Computing 7, 1971:281292.
  [7]DONALD E KNUTH.The Art of Computer Programming,Vol 2 Seminume rical Algorithms[M].second edition. Massachusetts: Addison-Wesley,1981:7537 61.
  [8]A MENEZES,P VAN,OORSCHOT.Handbook of AppliedCryptography[M].CRC Press Inc., 1996:347351. [9]TOM ST DENIS.BigNum Math Implementing Cryptographic MultiplePrecision Arithmetic[M].SYNGRESS Publishing,2003:116126.
  [10]THOMAS H CORMEN,CHARLES E LEISERSON,RONALD L. Rivest, Cli fford St ein, 算法导论[M].第2版.潘金贵,顾铁成,李成法,等译. Massachusetts: The MIT Pr ess, 2001:652658.
  (责任编辑:李丽)
其他文献
摘 要:该文介绍了河北农业大学气象学实验的教学现状,分析了气象学实验教学中存在的教学内容单调、教学方式传统以及考核体系缺失等问题,并提出了以改革教学内容为主导、以改革教学方式为引导和以改革考核体系为督导的“2教1考”改革模式。旨在提高学生学习兴趣和创新能力,提升教学效果,也为其他实验课程的改革提供参考。  关键词:气象学;实验教学;教学改革;“2教1考”改革模式  中图分类号 G642 文献
期刊
摘 要:打赢脱贫攻坚战是党的十九大提出的重要战略目标之一,也是2020年我国全面建成小康社会的标志性指标。该研究基于铜陵市郊区周潭镇施湾村扶贫工作实际,以习近平精准扶贫思想为指导,探索基于“一村一品”的从“扶贫”到“脱贫”、建立了以产业脱贫为核心、政策兜底为基础、激发贫困人群内生动力为关键、党建引领脱贫攻坚为保障的长效机制,旨在促进贫困人口增收,实现长久脱贫。  关键词:一村一品;长效脱贫;机制 
期刊
摘 要:该试验是在当地种植条件下,通过对内糜5号、内糜9号、伊选黄糜等3个糜子品种其不同穗部位在不同成熟时间采收的种子,做发芽率试验,研究表明:糜子种子在开花灌浆后35d开始收获,待休眠期结束后,芽率一般在60%以上,可作为灾害年份种子生产提供理论参考依据。  关键词:内糜5号;内糜9号;伊选黄糜;发芽率  中图分类号 S516 文献标识码 A 文章编号 1007-7731(2017)18-002
期刊
摘 要:探索春季不同追肥策略对稻茬晚播麦生产和产量的影响,为淮北地区稻茬晚播麦科学追肥提供依据。在大田条件下,以淮麦33为材料,采用大区试验的方法,研究了在返青期、拔节期一次追肥和在返青期+拔节期、拔节期+叶龄余数1.5期2次追肥4种追肥方式对稻茬晚播麦生长和产量的影响。结果表明:追肥时间和次数主要影响小麦的成穗数和粒重,在返青期+拔节期2次追肥的方式小麦群体结构合理,成穗率高,产量结构协调,单产
期刊
摘 要:该研究采用大田试验,在当地习惯施肥基础上,添加不同比例的饼肥,探讨饼肥对烤烟生长的影响。结果表明,饼肥在较低用量范围内,可以明显增加烤烟生育中前期的株高以及中后期的叶片数,对叶长和叶宽的影响较小,并可促进烤烟后期生长,延长生育期,从而提高了产量。综合考虑,饼肥用量控制在150kg/hm2是比较适宜的。  关键词:烤烟;饼肥;土壤改良  中图分类号 S572 文献标识码 A 文章编号 100
期刊
摘 要:通过开展康勃大量元素水溶肥在玉米上的施用效果试验,结果表明:在当地习惯施肥的基础上,于苗期、拔节前、灌浆期叶面喷施康勃大量元素(微量元素型)水溶肥料,玉米气生根发达,植株健壮,抗病、抗旱、抗倒伏、高温热害能力增强;粒数、粒重明显提高,灌浆时间、叶功能期延长,灌浆速度加快,有效减少了玉米的秃尖长度;结实率明显提高,品质明显改善,较清水对照增产17.9%左右,增产效果明显,经济效益显著。  关
期刊
摘 要:福建省自2014年正式启动排污权交易工作以来,建立了较为完善的交易制度,构建了全省统一的交易平台,市场交易逐渐活跃,对提高环境资源配置效率、促进污染治理、改善质量起到了积极作用。借鉴福建省成功的做法和经验,该文提出南京市进一步推进排污权有偿使用与交易的对策建议。  关键词:排污权交易;二级市场;福建省;南京市;借鉴  中图分类号 X321 文献标识码 A 文章编号 1007-7731(20
期刊
摘 要:以感病马铃薯、番茄、烟草幼苗为材料,采用茎叶喷雾的方法进行试验,对比了13%氯吲哚酰肼·氨基寡糖素SC和0.5%氨基寡糖素AS防治病毒病的效果。结果表明,13%氯吲哚酰肼·氨基寡糖素SC对马铃薯病毒病及番茄黄化曲叶病毒病、烟草花叶病毒病均具有较好的防治效果。在发病初期,茎叶喷雾3次,每次间隔7d,能够较好地抑制病毒病的危害。  关键词:氯吲哚酰肼;病毒病;防治效果  中图分类号 S436
期刊
摘 要:该文主要概述了近年来土壤重金属元素分析的前处理技术研究进展,包括酸熔法(湿法消解、高压密封消解、微波消解)和碱熔法,并对各种方法的优缺点进行了总结和归纳,最后对前处理方法的发展方向进行了展望。  关键词:土壤;重金属;前处理  中图分类号 X53 文献标识码 A 文章编号 1007-7731(2017)18-0054-02  1 引言  近年来,随着工业化和城市化的快速发展,土壤污染特别是
期刊
摘 要:该文介绍了川百芷的生长习性,提出了其丰产栽培技术,主要包括:选地整地、播种、田间管理等。  关键词:川白芷;生长习性;栽培技术  中图分类号 S567 文献标识码 A 文章编号 1007-7731(2017)18-0082-02  川白芷是伞形科白芷[Angelica dahurica(Fisch.ex Hoffm.)Benth.et Hook.f.var.formosana(Boiss)
期刊