一种二元域位宽可变模乘运算器的制作方法

文档序号:12176351阅读:597来源:国知局
一种二元域位宽可变模乘运算器的制作方法与工艺

本发明涉及椭圆曲线加密(ECC)算法的硬件实现领域,具体涉及一种二元域多项式基下的可对不同位宽数据进行计算的底层模乘运算器。



背景技术:

在信息安全领域中,越来越多的信息在公开的媒体中进行交流,为了确保信息交流的安全性和保密性,各种密码学随之诞生,并广泛运用在无线网络通信领域中。目前,常用的公钥密码算法是RSA和椭圆曲线密码算法。椭圆曲线密码算法的安全基础建立在椭圆曲线离散对数问题(ECDLP)的困难之上,具有完全指数级的计算复杂度。并且,160位的ECC可提供相当1024位RSA密码的安全强度,从而在保证安全强度的前提下,ECC的计算量和存储空间更小,在实际应用中加解密速度更快,节省功耗、带宽和存储空间。

相似的原因,椭圆曲线密码算法非常适合应用于移动通信工具、PDA、无线网络、智能卡等计算资源受限的小型嵌入式设备上。网络服务器、数字认证中心等高端应用领域的大型设备,为了提供高速的数字签名和签名认证服务,也倾向于选用ECC公钥体制。因此,ECC被公认为代表了公钥密码未来的发展方向。

模乘运算单元是椭圆曲线加密算法的基本运算功能单元之一,在许多模块中得到调用,它的速度和效率直接影响整个ECC处理器的速度、面积和功耗,对模乘运算硬件单元的设计显得尤为重要。随着ECC算法的广泛应用,算法实现的位数需要也不一样,为了保证安全模块的广泛使用性,并且在保证高速运算的前提下,就需要在底层的模乘运算器中实现位宽可变。在以往的技术中,针对不同的位宽,均需要设计不同的硬件电路以适配位宽,则会造成在硬件电路上大量的资源浪费,同时过大的面积还会造成线路的延时,影响整体性能。可重构技术是解决以上问题的关键途径,在进行运算之前,针对应用需求的不同,对处理单元进行配置,重构出相应的电路结构,完成运算,这是本发明最关键的创新点。

因此,位宽可变的可配置模乘运算单元可以在保持较高性能的前提下具备一定的灵活性,以适应不同位数的ECC加密算法。



技术实现要素:

为了解决现有技术存在的不足,本发明的目的在于提供一种针对椭圆曲线密码算法的实现不同位宽的模乘运算的硬件。本发明在保证高速运算的前提下,能够根据需求配置相应的硬件电路,降低硬件成本,提高适用性。

本发明为实现上述发明目的,设计的利用状态机控制串并结合的二元域位宽可变模乘运算器,用于计算式C(x)=(A(x)·B(x))modf(x),其中A(x),B(x)都是位宽为m的二进制域下多项式基表示的无符号数,f(x)是位宽为m+1的二进制域下多项式基表示的无符号数。

本发明的整体思路在于,将输入的乘数B(x)经过数据移位单元进行分段,然后与A(x)完成部分积乘法运算,运算结果与字级乘法单元的输出结果作模加运算,如果分段数据还没有送完则先将中间结果存储到输出缓存单元中,同时等待部分积乘法单元的运算结果,以进行下一次循环的运算,直至完成对乘数B(x)所有位数的计算,最后控制输出缓存单元并行输出最终的运算结果。

本发明所述的二元域位宽可变模乘运算器,包括部分积乘法单元、字级乘法单元、输出缓存单元,其特征在于还包括数据移位单元以及控制单元;

控制单元同时连接数据移位单元、部分积乘法单元、字级乘法单元以及输出缓存单元;控制单元为状态机,按照计算位宽的要求,控制数据移位单元、部分积乘法单元、字级乘法单元以及输出缓存单元之间循环计算的次数;实现的电路上根据使能信号判断是否开始进行模乘运算,并根据模乘位宽选择信号,配置相应的硬件电路,第一待计算数据A在理论计算中表述为多项式A(x),第二待计算数据B在理论计算中表述为多项式B(x);

数据移位单元的输入端作为模乘运算器的第二输入端,接收第二待计算数据B;

部分积乘法单元的第一输入端连接数据移位单元的输出端,部分积乘法单元的第二输入端作为模乘运算器的整体的第一输入端,接收第一待计算数据A;部分积乘法单元的第三输入端连接模乘运算器的整体的第三输入端,接收无符号数F;

字级乘法单元的第一输入端同样连接模乘运算器的整体的第三输入端,接收无符号数F,字级乘法单元的第二输入端连接输出缓存单元的输出端,接收字级乘法单元输出的运算结果C;

输出缓存单元的输入端通过加法器,同时连接部分积乘法单元和字级乘法单元的输出端,并接收其计算数据;输出缓存单元的输出端同时作为模乘运算器的整体的输出端,输出运算结果C。

其中,所述的数据移位单元接收第二待计算数据B后循环的将第二待计算数据B左移D位宽后,取高D位,输出至部分积乘法单元(102)的第一输入端,直至第二待计算数据B的所有位数都输出至部分积乘法单元(102)的第一输入端。

其中,所述的部分积乘法单元将所接收的第二待计算数据B的高D位与第一待计算数据A作模乘约减运算;

部分积乘法单元由D-1个比特乘法器、D个二选一数据选择器以及层异或门构成,

比特乘法器之间串联连接,第一比特乘法器的第一输入端接收第一待计算数据A,其余比特乘法器的第一输入端连接上一个比特乘法器的输出端,比特乘法器的第二输入端均接收无符号数F,每个比特乘法器的输出端分别对应一个二选一数据选择器的第一输入端连接,第一比特乘法器的第一输入端与剩下的一个二选一数据选择器的第一输入端连接,二选一数据选择器的第二输入端置零,二选一数据选择器的选择端按照所对应的比特乘法器的编号从小到大的顺序依次按照从低位到高位的顺序连接第二待计算数据B的D位数据;相邻两个二选一数据选择器的输出端同时连接至一个异或门,形成由D/2个异或门组成的第一层异或门结构;相邻的两个处于第一层的异或门的输出端同时连接至另一个异或门,形成由D/4个异或门组成的第二异或门结构,以此类推直至形成由1个异或门组成的第层异或门,第层异或门的输出端为部分积乘法单元的输出端。

其中,所述的比特乘法器主要由D个与门和D-1个异或门组成,与门的第一输入端均连接至第一待计算数据A的最高位,D个与门的第二输入端分别按照从高位至低位的顺序接收无符号数F的D位数据,D-1个异或门的第一输入端分别按照从高位至低位的顺序依次与D-1个与门的输出端连接,D-1个异或门的第二输入端分别按照从第D-1位至第1位的顺序依次接收第一待计算数据A的低D-1位数据,比特乘法器的输出端将最低位与门的输出值拼接至D-1个异或门输出值所组成的数据的最低位,输出D位的比特乘法运算结果。

其中,所述的字级乘法单元将反馈的运算结果C的高D位与无符号数F作模乘约减运算;

字级乘法单元由D个比特乘法器串联构成,第一比特乘法器的第一输入端接收反馈的运算结果C的高D位数据,其余比特乘法器的第一输入端连接上一个比特乘法器的输出端,比特乘法器的第二输入端均接收无符号数F,第D个比特乘法器的输出端作为字级乘法单元输出D位的字级乘法运算结果。

上述的比特乘法器中进行运算的数据低于D位时,将数据按照高位对齐的方式输入,剩余的低位用0补全。

所述的控制单元根据计算位宽的要求,控制数据移位单元左移的位数D,并控制部分积乘法单元和字级乘法单元在一个时钟周期内同步完成部分积乘法计算和部分积乘法计算,并将两者输出的中间结果通过加法器同步存储于输出缓存单元中,直至第二待计算数据B的所有位数都完成运算,最后控制输出缓存单元输出最终的运算结果。

本发明为实现233,283,409,571四种位宽的模乘运算,基础乘法模块(部分积乘法单元和字级乘法单元)并行执行计算,而整体结果采用串行的方式。模乘运算器根据给定的模乘位宽选择信号,配置相应硬件电路,通过一个状态机控制整个运算流程,在不同位宽的条件下,尤其是低位数计算时,状态机根据寄存器表示的状态,自动跳过不需要执行的状态,输出运算结果,以此提高模乘运算器的运算速度。

其中,所述的233位运算中无符号数F所对应的不可约多项式为fz=z571+z412+z338;283位运算中无符号数F所对应的不可约多项式为fz=z571+z300+z295+z293+z288;409位运算中无符号数F所对应的不可约多项式为fz=z571+z249+z162

其中,所述的左移的位数D为41,在进行233位的模乘运算时循环计算的次数为5次,在进行283位的模乘运算时循环计算的次数为6次,在进行409位的模乘运算时循环计算的次数为9次,在进行571位的模乘运算时循环计算的次数为13次。

此处的D位不是一个固定的值。D值越大,计算所花费的周期越少,但布设硬件电路所需的面积也越大;反之,周期大,面积小。因此,一个合适的D值是对面积和计算周期权衡后的结果。

有益效果

本发明利用状态机,根据计算的位数控制循环计算的步数,每一步中同时并行的进行字乘和部分乘的运算,最后再将所有步骤的计算结果通过输出缓存单元整合进行串行的输出。这样的串并结合的方式,在设计对应的基础乘法模块,即设计部分积乘法单元和字级乘法单元时,针对兼容多种位数的运算的需求,在底层的比特乘法器的设计中,本发明将每一位的运算尽可能分开独立布设线路。本发明中,将数据按照高位对齐的方式输入,剩余的低位用0补全即MSB-first方式(Most Significant Bit first,高位优先方式)以这种方式,避开了剩余低位对运算的影响。

同时,结合状态机的控制,本发明实现了在牺牲小部分组合逻辑电路面积的情况下(本发明中用一套部分积乘法单元和字级乘法单元,替代了现有位宽可变模乘运算器内部针对不同位宽数据而设的若干独立的运算单元),取得高速运算的技术效果。即,通过可重构的配置方式在减小模乘运算器面积的前提下依旧可以满足不同的位宽要求。且具有一定的扩展性,可增强模乘运算器在实际应用中的适用性。

本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。

附图说明

附图用来提供对本发明的进一步理解,并且构成说明书的一部分,并与本发明的实施例一起,用于解释本发明,并不构成对本发明的限制。在附图中:

图1是本发明实现位宽可变模乘器的整体硬件结构示意图;

图2是本发明实现位宽可变模乘器的字级乘法单元硬件结构示意图;

图3是本发明实现位宽可变模乘器的部分积乘法单元硬件结构示意图;

图4是本发明实现位宽可变模乘器的比特乘法单元硬件结构示意图;

图5是本发明实现位宽可变模乘器的状态图。

具体实施方式

以下结合附图对本发明的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本发明,并不用于限定本发明。

图1是本发明位宽可变模乘器的整体硬件结构示意图。所述的二元域位宽可变模乘运算器,包括部分积乘法单元102、字级乘法单元103、输出缓存单元104,其特征在于还包括数据移位单元101以及控制单元;

控制单元同时连接数据移位单元、部分积乘法单元、字级乘法单元以及输出缓存单元;控制单元为状态机,按照计算位宽的要求,控制数据移位单元、部分积乘法单元、字级乘法单元以及输出缓存单元之间循环计算的次数;实现的电路上根据使能信号判断是否开始进行模乘运算,并根据模乘位宽选择信号,配置相应的硬件电路,第一待计算数据A在理论计算中表述为多项式A(x),第二待计算数据B在理论计算中表述为多项式B(x);

数据移位单元的输入端作为模乘运算器的第二输入端,接收第二待计算数据B;

部分积乘法单元的第一输入端连接数据移位单元的输出端,部分积乘法单元的第二输入端作为模乘运算器的整体的第一输入端,接收第一待计算数据A;部分积乘法单元的第三输入端连接模乘运算器的整体的第三输入端,接收无符号数F;

字级乘法单元的第一输入端同样连接模乘运算器的整体的第三输入端,接收无符号数F,字级乘法单元的第二输入端连接输出缓存单元的输出端,接收字级乘法单元输出的运算结果C;

输出缓存单元的输入端通过加法器,同时连接部分积乘法单元和字级乘法单元的输出端,并接收其计算数据;输出缓存单元的输出端同时作为模乘运算器的整体的输出端,输出运算结果C。

本发明中,通过数据移位单元,将待运算数据拆分成若干部分,通过状态机的控制,使得运算器先分别对拆分出的每一部分数据进行运算,当数据移位单元中待运算数据的所有位都已经分别完成运算后,将输出缓存单元中对每一步运算的中间结果进行组合拼接,形成最终结果进行输出。处于对运算正确性的考虑,此处需要将每一步运算的中间结果都寄存至输出缓存单元内,并将中间结果反馈至运算结构中,连同下D位数据一并参与运算。

由于本发明希望使用同样的硬件结构完成对多种位宽数据的计算,因而,在设计通用的硬件电路连接关系时,需要针对内部的具体运算结构(字级乘法单元和部分积乘法单元,尤其对其内部的比特乘法器)进行调整,以满足不同位宽数据的运算需求。具体结构如下。

其中,所述的数据移位单元接收第二待计算数据B后循环的将第二待计算数据B左移D位宽后,取高D位,输出至部分积乘法单元(102)的第一输入端,直至第二待计算数据B的所有位数都输出至部分积乘法单元(102)的第一输入端。

其中,所述的部分积乘法单元将所接收的第二待计算数据B的高D位与第一待计算数据A作模乘约减运算;

部分积乘法单元由D-1个比特乘法器、D个二选一数据选择器以及层异或门构成,

比特乘法器之间串联连接,第一比特乘法器的第一输入端接收第一待计算数据A,其余比特乘法器的第一输入端连接上一个比特乘法器的输出端,比特乘法器的第二输入端均接收无符号数F,每个比特乘法器的输出端分别对应一个二选一数据选择器的第一输入端连接,第一比特乘法器的第一输入端与剩下的一个二选一数据选择器的第一输入端连接,二选一数据选择器的第二输入端置零,二选一数据选择器的选择端按照所对应的比特乘法器的编号从小到大的顺序依次按照从低位到高位的顺序连接第二待计算数据B的D位数据;相邻两个二选一数据选择器的输出端同时连接至一个异或门,形成由D/2个异或门组成的第一层异或门结构;相邻的两个处于第一层的异或门的输出端同时连接至另一个异或门,形成由D/4个异或门组成的第二异或门结构,以此类推直至形成由1个异或门组成的第层异或门,第层异或门的输出端为部分积乘法单元的输出端。

其中,所述的比特乘法器主要由D个与门和D-1个异或门组成,与门的第一输入端均连接至第一待计算数据A的最高位,D个与门的第二输入端分别按照从高位至低位的顺序接收无符号数F的D位数据,D-1个异或门的第一输入端分别按照从高位至低位的顺序依次与D-1个与门的输出端连接,D-1个异或门的第二输入端分别按照从第D-1位至第1位的顺序依次接收第一待计算数据A的低D-1位数据,比特乘法器的输出端将最低位与门的输出值拼接至D-1个异或门输出值所组成的数据的最低位,输出D位的比特乘法运算结果。

其中,所述的字级乘法单元103将反馈的运算结果C的高D位与无符号数F作模乘约减运算;

字级乘法单元103由D个比特乘法器串联构成,第一比特乘法器的第一输入端接收反馈的运算结果C的高D位数据,其余比特乘法器的第一输入端连接上一个比特乘法器的输出端,比特乘法器的第二输入端均接收无符号数F,第D个比特乘法器的输出端作为字级乘法单元(103)输出D位的字级乘法运算结果。

上述的比特乘法器中进行运算的数据低于D位时,将数据按照高位对齐的方式输入,剩余的低位用0补全。

所述的控制单元根据计算位宽的要求,控制数据移位单元101左移的位数D,并控制部分积乘法单元102和字级乘法单元103在一个时钟周期内同步完成部分积乘法计算和部分积乘法计算,并将两者输出的中间结果通过加法器同步存储于输出缓存单元104中,直至第二待计算数据B的所有位数都完成运算,最后控制输出缓存单元104输出最终的运算结果。

如图1所示,本发明实现的位宽可变的模乘器100主要包括数据移位单元101,部分乘法单元102,字级乘法单元103,输出缓存单元104和控制单元。

其主要的工作原理如下所示:

当输入使能有效时,输入的数据B(x)首先会通过移位寄存器完成分段处理,然后与数据A(x)进行部分积模乘运算,运算完成后将结果与字乘法器输出值进行模加运算。如果此时分段数据尚未传输完毕,则需将模加运算的结果反馈至字乘法器,同时将该结果进行寄存等待部分积模乘运算完毕以进行下一个周期的运算。

算法如下所示:

数据移位单元101主要对一个位宽为m位的数据作移位运算,移位D位并截取高D位,作为最后的数据输出。

字级乘法单元103主要用于计算一个位宽为m位的数据(中间结果C)和D个x作模乘并模约减的运算,输出为一个m位的数据。其中,无符号数F表示约减多项式。

如图2所示,字乘法单元主要由D个比特乘法器(201~241)串联组成,字乘法单元在每个clock完成一次运算,得到的结果,作为输出缓存单元104之前的数据模加运算的一个输入。

其主要实现以下计算:

β=xDA(x)modf(x)

就是由D个比特乘法器串联而成,每一级的乘法器完成一次乘x的操作,经过D级串联,得到最终的结果。

部分积单元102主要用于计算一个位宽为m位的数据和一个位宽为D位的数据作模乘并模约减的运算,输出为一个m位的数据。

如图3所示,部分积乘法单元主要由D-1个比特乘法器(301~340)串联连接,D个二选一数据选择器(341~381)以及数个异或门构成。每个clock完成一次运算,将得到的m位计算结果,作为数据模加运算的一个输入。

其主要实现A(x)和Bi(x)的乘法运算,其定义如下:

Bi(x)·A(x)modf(x)=(b0+b1x+…+bD-1xD-1)·A(x)modf(x)

展开后得到:

(b0·A(x)+b1x·A(x)+…+bD-1xD-1·A(x))modf(x)

式中每一项都可以用类似图4的比特乘法单元来实现。本设计中部分积乘法模块采用串并结合的方式,其整体复杂度由D的取值决定。A(x)首先分别和x、x2...xD-1进行字乘法运算,该步骤使用1个字乘法电路实现,将每个x模乘电路的结果输出,然后分别与Bi(x)多项式的各项系数进行与运算,得到若干个多项式,最后将这些多项式的系数按位进行异或,求得最后Bi(x)·A(x)modf(x)的运算结果。

字乘法单元103和部分积乘法单元102在一个周期里并行运行。

本发明中,如果D的参数选择过小,虽然电路耗费的资源很少,需要的面积很小,但是执行速度慢,需要的周期也很长;如果D的参数选择过大,执行速度快了,需要的周期也变少了,但是电路的耗费的资源增加,需要的面积也会变大;因此,本发明中综合考虑面积和速度,并且结合四个档位实际运算的周期的情况,选择参数值为41,作为串并行操作的一个重要指标。

输出缓存单元104主要用于寄存一个周期里运算结束后C(x)的值,经过相应的周期,C(x)的值可以作为最终模乘运算的结果输出。

图4是本发明位宽可变模乘器的比特乘法器结构示意图。

其主要由D个与门和D-1个异或门组成。

算法原理如下:

一个多项式如

β(x)=(βm-1xm-1m-2xm-2+…+β1x+β0);

计算β(x)·x后将要执行模约减操作,得到:

γ(x)=(βm-1xmm-2xm-1+…+β1x20x);

又模约减多项式通过官方确定为:

f(x)=xm+fm-1xm-1+fm-2xm-2+…+f1x+f0

则xm modf(x)=fm-1xm-1+fm-2xm-2+…+f1x+f0

则γ(x)=β(x)·x=(βm-1xm-1m-2xm-2+…+β1x+β0)·x=(βm-1xmm-2xm-1+…+β1x20x);

其中,代入xm,则得到最终的算式,

则γ(x)modf(x)=((αm-1fm-1m-2)xm-1)+(αm-1fm-2m-3)xm-2+…+(αm-1f10)x1)+αm-1f0);

如图4所示,这个电路结构中最高位αm-1是固定的,但是不同位宽的情况下要进行比特乘法运算的多项式的最高位不一致,分别为232、282、408和570。鉴于这种情况,将233位的多项式,283位的多项式,409位的多项式的最高位和571位的多项式的最高位对齐,按照高位对齐方式改变多项式的输入方式,剩余的低位用0补全。

同时,美国国家标准与技术研究院(National Institute of Standards and Technology,NIST)制定的233位,283位,409位的不可约多项式为:

fz=z233+z74+1;

fz=z283+z12+z7+z5+1;

fz=z409+z87+1。

对上述三档不可约多项式进行改写,变更为:

fz=z571+z412+z338

fz=z571+z300+z295+z293+z288

fz=z571+z249+z162

571位的不可约多项式不作改动。

上述的运算结束之后,对计算的571位结果分别截取高233位,高283位,高409位,能够得到相应的模乘结果,571位的模乘运算直接输出得到模乘结果。

因此,比特乘法单元400即可为四个档位的模乘运算复用,只要根据不同的档位输入修改后的不可约多项式,不用针对不同的位宽设计不同模约减硬件电路,大大减少了电路面积。

本发明采用状态机控制所述数据移位单元101,所述字乘法单元102,所述部分积乘法单元103和所述输出缓存单元104。状态机根据给出的模乘使能信号判断是否进行运算,根据位宽选择信号,选择正确的模约减多项式输入,控制各个单元执行,完成相应运算,输出最终的模乘结果。实施例的图中只是给出了数据输入输出,其他例如使能信号的输入,完成信号的输出均不会列出。

图5以D=41举例,给出了位宽可变的模乘器的状态图,进一步包括:

状态501,Idle,数据寄存器清零,根据模乘使能信号判断是否进入下一个状态Ready;

状态502,Ready,采用MSB方式取得第1个Bi(x),完成第1次部分积乘法运算;

状态503,Cx_0,寄存器取值为A(x)·BS-1(x),对Bx完成移位操作,取得第2个Bi(x),完成第1次字乘法运算,第2次部分积乘法运算,模加操作得到第1个C(x);

状态504,Cx_1,寄存器寄存上周期的结果C(x),对Bx完成移位操作,取得第3个Bi(x),完成第2次字乘法运算,第3次部分积乘法运算,模加操作得到第2个C(x);

状态505,Cx_2,寄存器寄存上周期的结果C(x),对Bx完成移位操作,取得第4个Bi(x),完成第3次字乘法运算,第4次部分积乘法运算,模加操作得到第3个C(x);

状态506,Cx_3,寄存器寄存上周期的结果C(x),对Bx完成移位操作,取得第5个Bi(x),完成第4次字乘法运算,第5次部分积乘法运算,模加操作得到第4个C(x);

状态507,Cx_4,寄存器寄存上周期的结果C(x),对Bx完成移位操作,取得第6个Bi(x),完成第5次字乘法运算,第6次部分积乘法运算,模加操作得到第5个C(x),如果完成的是233位的模乘操作,跳转状态至Final;

状态508,Cx_5,寄存器寄存上周期的结果C(x),对Bx完成移位操作,取得第7个Bi(x),完成第6次字乘法运算,第7次部分积乘法运算,模加操作得到第6个C(x),如果完成的是283位的模乘操作,跳转状态至Final;

状态509,Cx_6,寄存器寄存上周期的结果C(x),对Bx完成移位操作,取得第8个Bi(x),完成第7次字乘法运算,第8次部分积乘法运算,模加操作得到第7个C(x);

状态510,Cx_7,寄存器寄存上周期的结果C(x),对Bx完成移位操作,取得第9个Bi(x),完成第8次字乘法运算,第9次部分积乘法运算,模加操作得到第8个C(x);

状态511,Cx_8,寄存器寄存上周期的结果C(x),对Bx完成移位操作,取得第10个Bi(x),完成第9次字乘法运算,第10次部分积乘法运算,模加操作得到第9个C(x),如果完成的是409位的模乘操作,跳转状态至Final;

状态512,Cx_9,寄存器寄存上周期的结果C(x),对Bx完成移位操作,取得第11个Bi(x),完成第10次字乘法运算,第11次部分积乘法运算,模加操作得到第10个C(x);

状态513,Cx_10,寄存器寄存上周期的结果C(x),对Bx完成移位操作,取得第12个Bi(x),完成第11次字乘法运算,第12次部分积乘法运算,模加操作得到第11个C(x);

状态514,Cx_11,寄存器寄存上周期的结果C(x),对Bx完成移位操作,取得第13个Bi(x),完成第12次字乘法运算,第13次部分积乘法运算,模加操作得到第12个C(x);

状态515,Cx_12,寄存器寄存上周期的结果C(x),对Bx完成移位操作,取得第14个Bi(x),完成第13次字乘法运算,第14次部分积乘法运算,模加操作得到第13个C(x);

状态516,Final,寄存器寄存最终的模乘结果C(x)保持不变并输出,同时给出模乘完成标志Multi_done,状态跳转回Idle;

本发明中,状态机根据模乘选择信号进行模乘运算档位的选择,控制数据移位单元,字乘法单元,部分积乘法单元,和输出缓存单元实现模乘算法,在位数不一致的情况下,跳出后面无须执行的状态,实现位宽可变的快速模乘算法。

从原理上看,本发明的模乘算法有严格的数学证明。对于本发明的模乘算法,将两数的模乘和模约减设计在一个电路结构即比特乘法器里,并且实现了不同位宽的可配置,不用针对不同的位宽设计专用的模约减电路,减少了资源消耗,运算速度也相对较快,为签名验证算法的快速执行奠定了基础。

本发明中所描述的具体实施例仅仅是对本发明精神作举例说明。在不脱离本发明原理的情况下,本领域的技术人员还可作出许多变形和改进,这些也应属于本发明的保护范围。

本领域普通技术人员可以理解:以上所述仅为本发明的优选实施例而已,并不用于限制本发明,尽管参照前述实施例对本发明进行了详细的说明,对于本领域的技术人员来说,其依然可以对前述各实施例记载的技术方案进行修改,或者对其中部分技术特征进行等同替换。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1