CN101479698A - 将两数相乘 - Google Patents

将两数相乘 Download PDF

Info

Publication number
CN101479698A
CN101479698A CNA2007800245524A CN200780024552A CN101479698A CN 101479698 A CN101479698 A CN 101479698A CN A2007800245524 A CNA2007800245524 A CN A2007800245524A CN 200780024552 A CN200780024552 A CN 200780024552A CN 101479698 A CN101479698 A CN 101479698A
Authority
CN
China
Prior art keywords
value
multiplication
karatsuba
sections
section
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CNA2007800245524A
Other languages
English (en)
Inventor
W·哈森普劳伽
V·戈帕尔
G·高巴茨
M·巴斯
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of CN101479698A publication Critical patent/CN101479698A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • G06F7/53Multiplying only in parallel-parallel fashion, i.e. both operands being entered in parallel
    • G06F7/5324Multiplying only in parallel-parallel fashion, i.e. both operands being entered in parallel partitioned, i.e. using repetitively a smaller parallel parallel multiplier or using an array of such smaller multipliers

Landscapes

  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computational Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Complex Calculations (AREA)
  • Executing Machine-Instructions (AREA)
  • Error Detection And Correction (AREA)
  • Electrophonic Musical Instruments (AREA)

Abstract

本发明描述了将A和B这两个数相乘的技术。通常,通过对A和B的各段使用Karatsuba乘法并基于A和B的最高有效位的值调节该Karatsuba乘法来执行乘法。

Description

将两数相乘
背景技术
密码术保护数据免受不希望有的访问。密码术通常涉及对数据进行数学运算(加密),其使原始数据(明文)变得不可理解(密文)。逆数学运算(解密)从密文恢复原始数据。除加密和解密之外,密码术涵盖了各种各样的应用。例如,密码术常用于认证(即,可靠地确定通信主体的身份)、数字签名的生成等。
当前的密码技术严重依赖于密集数学运算。例如,很多方案使用一种被称为模取幂(modular exponentiation)的模算术,其涉及将大数升到若干次幂并相对于模数使它减小(即,当除以给定模数时的余数)。在数学上,模取幂可被表示为“gemod(模)M”,其中e是指数,M是模数。
在概念上,乘法和模约简(modular reduction)是直接运算。然而,在这些系统中使用的数字大小通常非常大,并且明显超出了处理器的固有字长。例如,密码术协议可能要求对长度为1024到4096位或更长的数字进行模运算,而很多处理器的固有字长仅为32或64位。对这种大数进行运算在时间方面和计算资源方面会是非常昂贵的。
附图简述
图1和图2示出Karatsuba乘法。
图3是示出Karatsuba乘法的实例实现的流程图。
图4和图5示出将数N折叠(fold)成数N’,其中N≡N’。
图6示出对N mod M的确定。
图7示出对数N进行迭代折叠。
图8描绘了执行Karatsuba乘法和/或模约简的体系结构。
详细描述
如上所述,各种各样的密码运算涉及非常大的数的乘法和/或模约简。在此描述的是可减少密码系统的这些计算密集运算和速度运算的负荷的各种技术。这些技术还可应用于更一般的用途、非密码、计算设置。一种这样的技术涉及提高被称为Karatsuba乘法的将大数相乘的技术的效率。另一技术涉及提高模约简的效率。
Karatsuba乘法
已开发了各种各样的方法来执行两数相乘。被称为教科书乘法的一种常见的方法涉及将操作数分段并对这些较小的段执行乘法运算。作为示例,两个n位宽的数A和B可被表示为一组较小的子段,诸如:
A=a1 2s+a0
                                          [1]
B=b1 2s+b0
                                          [2]
其中a0和b0项表示A和B的s个最低有效位,而a1和b1表示其余的较高有效位。在该表示法中,ax和bx中的下标x表示数内的段序数(例如,a0表示A的最低有效位,a1表示下一最高有效位,等等)。
利用常规的教科书乘法,可使用四个较小的乘法来计算A和B:
Ax B=a1b1 22s+(a0b1+b0a1)2s+a0b0
                                          [3]
被称为Karatsuba乘法的乘法技术可减少段乘法的数量。例如,对于以上的A和B,[3]中的项:
(a0b1+b0a1)
                                       [4]
的结果可被计算为:
[(a0+a1)(b0+b1)]-a1b1-a0b0
                                       [5]
因为a1b1和a0b0构成方程式[3]中的其它项,所以在方程式[5]中使用a1b1和a0b0的值并不表示额外的计算成本。在方程式[3]中用方程式[5]替换方程式[4],A x B的Karatsuba乘法可被计算为:
A x B=a1b1 22s+([(a0+a1)(b0+b1)]-a1b1-a0b0)2s+a0b0
                                       [6]
该替换用两次加法和单个乘法来对换两次乘法。在大多数情况下,这表示在计算效率上有重大进步。
在以上示例中,Karatsuba将被分割成两段的数相乘(即,“两项Karatsuba乘法”)。然而,Karatsuba还可应用于其它数目的段。例如,对于数A和B,三项Karatsuba乘法可被定义为:
A=a2 22s+a1 2s+a0
                                       [7]
B=b2 22s+b1 2s+a0
                                       [8]
A x B=a2b2 24s+a1b1 22s+a0b0+[(a2+a1)(b2+b1)-a2b2-a1b1]23s+[(a2+a0)(b2+b0)-a2b2-a0b0]22s+[(a0+a1)(b0+b1)-a0b0-a1b1]2s
                                 [9]
其中A和B各自被分割成三个s位的段。
类似于两项Karatsuba乘法[6],三项Karatsuba乘法[9]用对相同序数的段的乘法运算(例如,axbx)和对同一数的各段的加法(例如,ax+ay)来替换不同序数的段之间的乘法(例如,axby)。也已针对五项Karatsuba乘法定义了各方程式。这些Karatsuba方程式的共有特性是它们至多需要(t2+t)/2次乘法,其中t是项的数目。
可使用递归来实现Karatsuba乘法。例如,在两项Karatsuba乘法:
Ax B=a1b1 22n+((a0+a1)(b0+b1)-a1b1-a0b0)2n+a0b0
                                  [6]
中,每个较小的段乘法又可以使用Karatsuba来执行。例如,执行A xB的Karatsuba乘法会涉及a1b1、a0b0、(a0+a1)(b0+b1)的Karatsuba乘法。这些乘法可涉及甚至更小的子段的Karatsuba乘法。例如,确定a1b1可涉及将a1和b1分割为子段的多个项。
然而,这种方法的一个潜在问题是产生了不同大小的操作数。即,(a0+a1)项和(b0+b1)项均可从加法运算产生进位。(a0+a1)和(b0+b1)的结果的后续乘法可能溢出到额外固有字中。这可能损害Karatsuba实现的很大一部分效率。
为解决“进位”问题,图1-3示出了实例实现,其对两个操作数的最低有效位执行Karatsuba乘法并随后基于最高有效位校正该结果。更详细地,图1示出正被相乘的两个操作数A100和B102。在该示例中,每个操作数是n+1位宽,其中n是某处理器的固有字长s的两倍。在该示例中,每个操作数可被分割成两项和一附加高位。例如,A的s个最低有效位构成a0,下s个有效位构成a1,而A的最高有效位构成ah
如图所示,可使用下式对大小为s的项执行Karatsuba乘法:
22s a1b1+2s[(a1+a0)(b1+b0)-a1b1-a0b0]+a0b0
                                         [10]
随后可基于最高有效位ah和bh的值来调节该结果。例如,如图所示,该结果可增加
2nah B[b1:b0]
                                                      106[11]
2nbh A[a1:a0]
                                                      108[12]
换言之,如果ah是“1”,则该结果增加移位n位的b1:b0的n位。类似地,如果bh是“1”,则该结果增加移位n位的a1:a0的n位。这些调节可被实现为加法运算,例如:
结果=结果+2nahB[b1:b0]
结果=结果+2nbhA[a1:a0]
或者实现为继之以加法的分支:
if(ah)then结果=结果+2nB[b1:b0]
if(bh)then结果=结果+2nA[a1:a0]
最后,如果ah和bh两者都是“1”,则该结果增加2n(即,ah bh)。这可通过使用分支来实现,例如:
if(ah bh)then结果=结果+22n
加法和一个或多个分支语句的这种组合可防止将进位向下传递到下级递归中。
图2示出上述用于将值为469的A 100与值为369的B 102相乘的程序的运算。如图所示,在排除最高有效位ah和bh的情况下,对A[2s-1:0]和B[2s-1:0]的Karatsuba乘法产生值24069。该值首先针对ah被调节为78597,随后针对bh被调节为107525。最后,因为ah和bh均为“1”,所以增加最高有效位22n=16以产生最终答案173061。同样,可通过Karatsuba技术的递归应用来确定axbx的值。通过切掉ah和bh位,对具有相同适宜大小的操作数进行递归运算。
图3示出该Karatsuba技术在递归方案中的实现。如上所述,对操作数A和B的Karatsuba乘法是通过A[n:0]和B[n:0]的乘法114继之以对A和B的最高有效位ah和bh的调节116来执行的。该结果值向上返回118递归栈。
当操作数的长度远大于处理器的固有字长时尤其需要Karatsuba乘法。例如,与较长的操作数相比,该处理器的固有字长可仅为s。当n逼近s时,Karatsuba的效率降低而教科书乘法变得更有吸引力。因而,如图3所示,取决于递归的当前深度112,该程序可使用教科书乘法120、122或者Karatsuba 104、106、108。在实践中,使用教科书乘法执行最后两级(例如,L=2)递归可提供最佳的整体性能。
尽管图1-3描绘了实例实现,但是可能有很多变型。例如,在图1-3中每个Karatsuba项被描绘为s位宽。然而,这些项既不需要具有相同位宽也不需要占据单个固有字。类似地,尽管ah和bh被描述为单个位,但是在其它实现中,ah和bh可包括多个位。
如上所述,已针对不同数量的项(例如,2、3和5)定义了不同的Karatsuba方程式。一个规范的Karatsuba分解是具有以下六个长度之一的数:
n=2k
n=3·2k
n=32·2k
n=33·2k
n=34·2k
n=5·2k
其中n是数的长度且k是整数。
为了优化Karatsuba分解,数可用0来填充以符合较大的规范形式。为辨别哪个规范的Karatsuba分解将使用该操作,可针对每一个计算w并选出最小的一个:
Figure A200780024552D00111
Figure A200780024552D00113
Figure A200780024552D00114
Figure A200780024552D00116
针对n的不同值可计算w的值。例如,这些结果可用于形成查找表,该查找表指示基于给定n的最小w值将填充一给定数的量。
利用折叠的模约简
除乘法以外,很多密码术方案涉及模约简(例如,N mod M的计算)。为减少模约简运算的费用,一些系统利用被称为Barrett模约简的技术。本质上,Barrett计算商的估值,
q=floor(floor(N/2m)μ/M)
                                          [13]
其中m是模数M的宽度,且μ是由下式确定的常数:
μ=floor(22n/M)。
                                          [14]
其中n是数N的宽度。N mod M的值随后可通过计算N-qM来确定,必要时再最后减去M以确保最终值小于M。对Barrett的效率有影响的是访问μ的预计算的值的能力。即,可仅基于N的大小来确定μ值而不需访问N的特定值。
诸如Barrett模约简之类的技术可减少模约简的费用。图4-6示出可进一步减少模约简计算成本的技术。特别地,图4示出将数N 202“折叠”为较小宽度的数N’206的技术。尽管其宽度更小,但是折叠运算仍确定N’以使N’mod M与N mod M相同。诸如经典Barrett模约简之类的传统运算随后可对较小的N’进行运算。通过“缩短”操作数N,后续运算涉及可减少用于确定模余数的乘法的较小的数。另外,数N越大,效率越显著。例如,抽样试验估计,对于大小为512位的N其速度增大27%,则对于大小为4096位的N其速度跃为增大177%。
更详细地,图4描绘了宽度为n的数N202和宽度为m的模数M200。为确定N mod M,“折叠”运算212从N生成N’。如图所示,折叠212发生于折叠点f,该折叠点将N描绘为较高有效位部分NH和较低有效位部分NL。例如,折叠点f可被选为落在模数的长度和N的长度的中点处。例如,假设N的宽度为2m(为模数宽度的两倍),那么折叠点可在由21.5m所识别的位的位置处。这样的折叠点可使N’的结果宽度最小化。即,在扩展或缩短NH或NL的任一方向上移动折叠点实际上增大了N’的大小。
基于折叠点,N’可被确定为:
N’=NH 2fmod M+NL
                                                212[15]
该较小的N’随后可用于利用例如经典Barrett技术来执行模约简。
如图所示,对N’的确定212涉及2fmod M项208(被称为M’)。2fmod M的值可以预计算而不用考虑特定的N值。针对M和f的各种值预计算该值通过将昂贵的乘法转移到时间更少的临界期而加速了对N’的实时计算。针对M和f各值的预计算的值可被存储在用于快速访问的存储器中的表中。如上所述,可使用例如Karatsuba乘法来执行对NH(2fmod M)的乘法。
为了说明,图5示出折叠的一个示例,其中N是值为252的8位宽的数(1111,1100b),而M是值为13的4位的数(1101b)。如图所示,折叠点选为f=21.5m=26。对N’的计算产生值96。如图所示,N和它在折叠后的对应值N’对模数13产生相同的模余数5。可使用各种诸如Barrett之类的模约简方法中的任意一种来执行对N’的模约简。
图6描绘了使用上述技术完整确定N mod M的一个示例。在该示例中,N 202的宽度为n=4s,而M204的宽度为m=2s。如图所示,折叠点f是23s。如图所示,M’=23smod M 222的预计算值可用于确定(M’)(NH)224。尽管图6将NH表示为floor(N/23s)的值,但是NH的值可通过设定NH=N[4s-1:3s]更快地获得。(M’)(NH)224的值被加到NL226以完成对N’的计算。同样,尽管图6将NL表示为N mod 23s,但是NL的值可通过设定NH=N[3s-1:0]更快地获得。
在确定N’之后,可使用经典Barrett约简来计算N’mod M。在这种情况下,Barrett约简230、234计算为:
R=N’-floor(floor(N’/22s)(μ/2s))M
                                                    [16]
其中μ被确定为floor(23s/M)。类似于M’的值,μ的值可针对s和M的各种值而被预计算。同样,该预计算可将昂贵的运算时移至不需要实时运算的周期。
结果R236可大于模数M 200。在这种相当罕见的情况下,减法R=R-M可用于确保R<M。
单个折叠运算可显著提高模约简的效率和实时性能。如图7所示,重复的折叠可关于所用的乘法和ALU运算(例如,加、减和移位)的总数提供进一步的效率。如图所示,N202同样被折叠成N’204。结果N’的宽度通常将为f。如果N’的宽度为f+1,则减法运算N’=N’-(M 2m)可用于“修整”N’,尽管这不是必要的。如图所示,附加的折叠运算将N’转换成N”206,同样地,其中N”mod M=N’mod M。该第二次折叠同样提高了计算效率。
在不同折叠迭代中使用的折叠点从第一次迭代的21.5m移至第二次迭代的21.25m。更一般地,给定迭代的折叠点可被确定为2(1+2^-i)m,其中i是迭代号。
尽管图7描绘了两次折叠,但是可能有附加的折叠。然而,附加折叠可能使收益递减和/或实际上增加乘法运算的次数。
模取幂的实例实现
上述技术可用于执行各种密码运算。例如,可将上述Karatsuba乘法和折叠技术组合以执行模取幂。
同样,模取幂涉及确定gemod M。执行模取幂是各种密码算法的核心。例如,在RSA中,公钥由公共指数e-public(e-公共)和模数M来形成。私钥由私人指数e-private(e-私人)和模数M来形成。为了加密报文(例如,分组或分组有效载荷),执行以下运算:
密文=明文e-publicmod M
                                             [17]
为解密消息,执行以下运算:
明文=密文e-privatemod M
                                             [18].
一种用于执行模取幂的程序从左到右依次处理指数e中的位。从初值A=1开始,该程序将遇到的每个“0”位的值平方(即,A=A*A)。对于每个“1”位,该程序既将该值平方又将其乘以g(即,A=A*A*g)。最后结果可用于模约简运算。例如,为了确定31010bmod 5,该程序如下运算,其中g=3,e=“1010”,且M=5:
                                       A
                                       1
指数位1-1                              1*1*3=3
指数位2-0                              3*3=9
指数位3-1                              9*9*3=243
指数位4-0                              243*243=59049
A mod M                                 4
代替在最后当可能已累积了非常大的数时执行模约简,可在各乘法运算内交叉进行模约简,诸如在处理每个指数位或每几个指数位之后进行。例如,为了计算31010bmod 5,该程序可如下进行:
                         A
                         1
指数位1-1                1*1*3=3
A mod M                  3
指数位2-0                3*3=9
A mod M                  4
指数位3-1                4*4*3=48
A mod M                  3
指数位4-0                3^2=9
A mod M                  4
不管特定实现如何,将上述Karatsuba乘法技术用于平方与“g”乘法两者可以显著加快模取幂的速度。
另外,通过使用折叠,约简运算消耗相当少的处理资源。
通过存储重复使用的值可获得额外的计算效率。例如,在该示例中,在两个不同的乘法中涉及到g的值。在2048位指数的现实示例中,使用g的乘法的数量将会远大于此。为提高涉及g的Karatsuba乘法的效率,gi=(gH(i)+gL(i))的不同值可被存储在表中以供重复使用,其中i表示Karatsuba递归的深度。该高速缓冲可节省相当数量的多余地执行同一加法的循环。如果使用同一模数的模约简发生多次,则对诸如在折叠中使用的M’和μ之类的其它常用值的高速缓存也可增强性能。
当执行大小不均匀的数的乘法——诸如将1k大小的数乘以2k大小的数——时可使用附加优化。这种乘法可在确定Barrett的qM值以及在确定NH2fmod M时出现。为了利用Karatsuba,1k*2k乘法可被分解成两个1k*1k运算,诸如q*mh和q*ml。因为两个运算中均使用了q,所以(qh+q1)的值不需要被确定两次,相反可将其存储以供后用。
同样,以上仅仅是一个示例,并且Karatsuba和折叠技术可用于执行各种各样的其它密码运算以及其它通用的数学应用。
这些技术可按各种方式在各种系统中实现。例如,这些技术可以实现于专用数字或模拟硬件(例如,由上述编程技术以诸如Verilog(tm)之类的硬件描述语言确定)、固件中和/或实现为ASIC(专用集成电路)或可编程门阵列(PGA)。这些技术还可实现为设置在计算机可读介质上的计算机程序以便处理器执行。例如,处理器可以是通用处理器。
如图8所示,这些技术可由计算机程序来实现,其中这些计算机程序由可卸载密码运算的处理器模块300执行。如图所示,模块300包括多个可编程处理单元306-312和专用硬件乘法器316。处理单元306-312对从由核心302控制的共用存储器逻辑304下载的数据运行程序。其它处理器和/或处理器核心可向模块300发出命令以指定要执行的数据和运算。例如,处理器核心可向模块300发出用于对存储在RAM 314中的g、e和M值执行模取幂的命令。核心302可通过向共用存储器逻辑304发出指令来作出响应,其中这些指令是用于将模取幂程序下载到处理单元306-312并且将正被运算的数据从RAM 314下载到共用存储器304并最终下载到处理单元306-312。接着处理单元306-312执行这些程序指令。特别地,处理单元306-312可使用乘法器316执行诸如用于执行平方与“g”乘法的Karatsuba乘法之类的乘法。一旦完成,处理单元306-312就可将结果返回到共用存储器逻辑304以传递到请求核心。处理器模块300可与可编程核心集成在相同或不同的管芯上。
同样,图8仅仅示出使用实例体系结构来实现上述Karatsuba和折叠技术。然而,这些技术可用于各种各样的其它体系结构中,诸如具有编程的传统通用处理器的体系结构。
其它实施例也落在所附权利要求的范围内。

Claims (23)

1.一种设置在计算机可读存储介质上的计算机程序,其包括用于促使电路将A和B这两个数相乘的指令,所述程序用于:
将A分割成多个段ax和至少一位的附加置位(set)ah,其中x表示段序数且h表示所述至少一位的附加置位的位置;
将B分割成多个段bx和至少一位的附加置位bh
对A和B的所述各段执行Karatsuba乘法;
基于ah和bh的值调节所述Karatsuba乘法。
2.如权利要求1所述的计算机程序,其特征在于,Karatsuba乘法包括确定:
22sa1b1+2s[(a1+a0)(b1+b0)-a1b1-a0b0]+a0b0
其中a0、a1、b0、b1是A和B的所述各段,它们各自的宽度为s,其中s是正整数。
3.如权利要求1所述的计算机程序,其特征在于,所述用于调节的指令包括用于以下运算的指令:
加上ahB[b1:b0]2h的值;
加上bhA[b1:b0]2h的值;以及
如果ah和bh都等于1则加上ahbh22h的值。
4.如权利要求1所述的计算机程序,其特征在于,所述Karatsuba乘法包括至少对A和B的较小的段进行的递归Karatsuba乘法。
5.如权利要求1所述的计算机程序,其特征在于,A和B被分割成从下组中选出的一种:2段、3段以及5段。
6.如权利要求1所述的计算机程序,其特征在于,ah和bh包括单个位。
7.如权利要求1所述的计算机程序,其特征在于,还包括使用所述用于执行Karatsuba乘法的指令和所述用于调节的指令来确定gemod M的值。
8.如权利要求7所述的计算机程序,其特征在于,M是公钥的模数。
9.一种将A和B这两个数相乘的计算机实现方法,所述方法包括:
将A分割成多个段ax和至少一位的附加置位(set)ah,其中x表示段序数且h表示所述至少一位的附加置位的位置;
将B分割成多个段bx和至少一位的附加置位bh
对A和B的所述各段执行Karatsuba乘法;
基于ah和bh的值调节所述Karatsuba乘法。
10.如权利要求9所述的方法,其特征在于,Karatsuba乘法包括确定:
22sa1b1+2s[(a1+a0)(b1+b0)-a1b1-a0b0]+a0b0
其中a0、a1、b0、b1是A和B的所述各段,它们各自的宽度为s,其中s是正整数。
11.如权利要求9所述的方法,其特征在于,所述调节包括:
加上ahB[b1:b0]2h的值;
加上bhA[b1:b0]2h的值;以及
如果ah和bh都等于1则加上ahbh22h的值。
12.如权利要求9所述的方法,其特征在于,所述Karatsuba乘法包括至少对A和B的较小的段进行的递归Karatsuba乘法。
13.如权利要求9所述的方法,其特征在于,A和B被分割成从下组中选出的一种:2段、3段以及5段。
14.如权利要求9所述的方法,其特征在于,ah和bh包括单个位。
15.如权利要求9所述的方法,其特征在于,还包括使用用于执行Karatsuba乘法的指令和用于调节的指令来确定gemod M的值。
16.如权利要求15所述的方法,其特征在于,M是公钥的模数。
17.一种系统,包括:
用于将A和B这两个数相乘的电路,所述电路用于:
将A分割成多个段ax和至少一位的附加置位ah,其中x表示段序数且h表示所述至少一位的附加置位的位置;
将B分割成多个段bx和至少一位的附加置位bh
对A和B的所述各段执行Karatsuba乘法;
基于ah和bh的值调节所述Karatsuba乘法。
18.如权利要求17所述的系统,其特征在于,Karatsuba乘法包括确定:
22sa1b1+2s[(a1+a0)(b1+b0)-a1b1-a0b0]+a0b0
其中a0、a1、b0、b1是A和B的所述各段,它们各自的宽度为s,其中s是正整数。
19.如权利要求17所述的系统,其特征在于,所述用于调节的电路包括执行以下运算的电路:
加上ahB[b1:b0]2h的值;
加上bhA[b1:b0]2h的值;以及
如果ah和bh都等于1则加上ahbh22h的值。
20.如权利要求17所述的系统,其特征在于,所述Karatsuba乘法包括至少对A和B的较小的段进行的递归Karatsuba乘法。
21.如权利要求17所述的系统,其特征在于,ah和bh包括单个位。
22.如权利要求17所述的系统,其特征在于,所述电路包括用于执行对A和B执行乘法的指令的可编程电路。
23.如权利要求22所述的系统,其特征在于,还包括与所述电路集成在同一管芯上并通信地耦合至所述电路的多个可编程核心。
CNA2007800245524A 2006-06-27 2007-06-21 将两数相乘 Pending CN101479698A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/476,329 2006-06-27
US11/476,329 US7930337B2 (en) 2006-06-27 2006-06-27 Multiplying two numbers

Publications (1)

Publication Number Publication Date
CN101479698A true CN101479698A (zh) 2009-07-08

Family

ID=38846423

Family Applications (1)

Application Number Title Priority Date Filing Date
CNA2007800245524A Pending CN101479698A (zh) 2006-06-27 2007-06-21 将两数相乘

Country Status (5)

Country Link
US (1) US7930337B2 (zh)
CN (1) CN101479698A (zh)
DE (1) DE112007001319T5 (zh)
TW (1) TW200817999A (zh)
WO (1) WO2008002822A2 (zh)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7930337B2 (en) 2006-06-27 2011-04-19 Intel Corporation Multiplying two numbers
US8386553B1 (en) 2006-12-05 2013-02-26 Altera Corporation Large multiplier for programmable logic device
US7930336B2 (en) 2006-12-05 2011-04-19 Altera Corporation Large multiplier for programmable logic device
US8959137B1 (en) * 2008-02-20 2015-02-17 Altera Corporation Implementing large multipliers in a programmable integrated circuit device
US20110106872A1 (en) * 2008-06-06 2011-05-05 William Hasenplaugh Method and apparatus for providing an area-efficient large unsigned integer multiplier
US9990201B2 (en) * 2009-12-22 2018-06-05 Intel Corporation Multiplication instruction for which execution completes without writing a carry flag
US8549264B2 (en) 2009-12-22 2013-10-01 Intel Corporation Add instructions to add three source operands
RU2011107568A (ru) * 2011-03-01 2012-09-10 ЭлЭсАй Корпорейшн (US) Устройство (варианты) и способ генерирования конструкции комбинационного умножителя конечного поля малой глубины
FR2974202B1 (fr) * 2011-04-18 2013-04-12 Inside Secure Procede de multiplication de montgomery
US8683296B2 (en) 2011-12-30 2014-03-25 Streamscale, Inc. Accelerated erasure coding system and method
US8914706B2 (en) 2011-12-30 2014-12-16 Streamscale, Inc. Using parity data for concurrent data authentication, correction, compression, and encryption
US9722632B2 (en) 2014-09-22 2017-08-01 Streamscale, Inc. Sliding window list decoder for error correcting codes
CN109710308B (zh) 2017-10-25 2023-03-31 阿里巴巴集团控股有限公司 任务的处理方法、装置和系统

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2658932A1 (fr) 1990-02-23 1991-08-30 Koninkl Philips Electronics Nv Procede de codage selon la methode dite rsa, par un microcontroleur et dispositif utilisant ce procede.
US6404890B1 (en) 1998-04-08 2002-06-11 Citibank, Na Generating RSA moduli including a predetermined portion
JP2001271855A (ja) 2000-03-23 2001-10-05 Nisshinbo Ind Inc ドラムブレーキの操作ケーブル接続装置
US7508936B2 (en) 2002-05-01 2009-03-24 Sun Microsystems, Inc. Hardware accelerator for elliptic curve cryptography
US7363336B1 (en) * 2004-03-19 2008-04-22 Microsoft Corporation Six-term Karatsuba-variant calculator
US20070083585A1 (en) * 2005-07-25 2007-04-12 Elliptic Semiconductor Inc. Karatsuba based multiplier and method
US7930337B2 (en) 2006-06-27 2011-04-19 Intel Corporation Multiplying two numbers

Also Published As

Publication number Publication date
DE112007001319T5 (de) 2009-05-28
WO2008002822A2 (en) 2008-01-03
WO2008002822A3 (en) 2008-03-20
US7930337B2 (en) 2011-04-19
US20070299899A1 (en) 2007-12-27
TW200817999A (en) 2008-04-16

Similar Documents

Publication Publication Date Title
CN101479698A (zh) 将两数相乘
CN101097511B (zh) 使用折叠的模归约
EP0917047B1 (en) Apparatus for modular inversion for information security
US8862651B2 (en) Method and apparatus for modulus reduction
WO2020146285A1 (en) Protection of cryptographic operations by intermediate randomization
US20070116270A1 (en) Calculating unit for reducing an input number with respect to a modulus
US20070185948A1 (en) Method for modular multiplication
Bos et al. Fast Arithmetic Modulo 2^ xp^ y±1
Pessl et al. Curved tags–a low-resource ECDSA implementation tailored for RFID
Seo et al. Binary and prime field multiplication for public key cryptography on embedded microprocessors
US8417760B2 (en) Device and method for calculating a multiplication addition operation and for calculating a result of a modular multiplication
CN102393812A (zh) 椭圆曲线密码体制中的快速点乘算法的实现方法
US9042543B2 (en) Method for arbitrary-precision division or modular reduction
US8364740B2 (en) Device and method for calculating a result of a modular multiplication with a calculating unit smaller than the operands
CN101183945A (zh) 基于旁路算子的椭圆曲线抗旁路攻击方法
Bardis Secure, green implementation of modular arithmetic operations for IoT and cloud applications
Seo et al. Consecutive operand-caching method for multiprecision multiplication, revisited
CN115658005A (zh) 一种基于冗余的高精度低延时大整数除法加速装置
Paludo et al. Number theoretic transform architecture suitable to lattice-based fully-homomorphic encryption
US8290151B2 (en) Device and method for determining an inverse of a value related to a modulus
Bardis et al. Accelerated modular multiplication algorithm of large word length numbers with a fixed module
Knezevic et al. Modular reduction without precomputational phase
AU2020423805B2 (en) Secure selective product computation system, secure selective product computation method, secure computation apparatus, and program
CN111201559B (zh) 置换装置、置换方法、以及记录介质
CN108075889A (zh) 一种降低加解密运算时间复杂度的数据传输方法及系统

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C02 Deemed withdrawal of patent application after publication (patent law 2001)
WD01 Invention patent application deemed withdrawn after publication

Open date: 20090708