一种在嵌入式系统中实现大数预计算的方法

文档序号:424264阅读:324来源:国知局
专利名称:一种在嵌入式系统中实现大数预计算的方法
技术领域
本发明涉及信息安全领域,特别是涉及一种在嵌入式系统中实现大数预计算的方法。
背景技术
随着网络应用的普及,网络安全变得越来越重要,各种网络安全产品应运而生。网络安全产品涉及到信息保密、漏洞防护等方面,通常使用大数运算来保证数据的机密性。发明人在实现本发明的过程中,发现现有技术至少存在以下缺陷:现有技术中,在基于蒙哥马利模乘实现的大数运算过程中,通过减法和移位操作得到预计算值,处理速度较慢。

发明内容
本发明提供了一种在嵌入式系统中实现大数预计算的方法,用于解决大数运算过程中处理速度过慢的缺陷。本发明提供了一种在嵌入式系统中实现大数预计算的方法,包括以下步骤:S1、读取第一寄存器中的数据,将读取到的数据写入到第一随机存储器;读取第二寄存器中的数据,将读取到的数据写入到第二随机存储器;所述第一寄存器用于存储第一数据,所述第二寄存器用于存储第二数据,所述第二数据的取值为以2为底数,以第三数据的取值为指数的幂,所述第三数据为整数;S2、调用取模模块,对所述第一随机存储器和所述第二随机存储器中的数据进行运算,将运算结果分别写入到第三寄存器和第四寄存器;所述取模模块用于将所述第一随机存储器中的数据作为模数,将所述第二随机存储器中的数据作为被模数,进行取模运算;S3、读取所述第三寄存器中的数据,将读取到的数据分别写入到第三随机存储器和第四随机存储器;读取所述第一寄存器中的数据,将读取到的数据写入到第五随机存储器;S4、调用模加模块,对所述第三随机存储器、所述第四随机存储器和所述第五随机存储器中的数据进行运算,使用运算结果更新所述第三寄存器中的数据;所述模加模块用于将所述第三随机存储器中的数据和所述第四随机存储器中的数据作为加数,将所述第五随机存储器中的数据作为模数,进行模加运算;S5、根据第五寄存器中的数据,从第六寄存器中读取位于最低位的数据,将读取到的数据作为当前位数据,所述第五寄存器中的数据的初始值为预设值,所述第六寄存器用于存储所述第三数据;S6、对所述当前位数据的取值进行判断,如果所述当前位数据的取值为零,则执行步骤S7 ;如果所述当前位数据的取值为1,则执行步骤SlO ;S7、读取所述第三寄存器中的数据,将读取到的数据分别写入到第六随机存储器和第七随机存储器;读取所述第一寄存器中的数据,将读取到的数据写入到第八随机存储器;S8、调用蒙哥马利模乘器,对所述第六随机存储器、所述第七随机存储器和所述第八随机存储器中的数据进行模乘运算,使用运算结果更新所述第三寄存器中的数据;所述蒙哥马利模乘器用于将所述第六随机存储器中的数据、所述第七随机存储器中的数据和所述第八随机存储器中的数据分别作为第一输入参数、第二输入参数和第三输入参数,进行模乘运算;S9、对所述第五寄存器中的数据进行更新,根据更新后的所述第五寄存器中的数据,从所述第六寄存器中读取比所述当前位数据高一位的数据,将读取到数据作为更新后的当前位数据,并返回步骤S6;S10、读取所述第四寄存器中的数据,使用读取到的数据更新所述第六随机存储器中的数据;读取所述第三寄存器中的数据,使用读取到的数据更新所述第七随机存储器中的数据;读取所述第一寄存器中的数据,使用读取到的数据更新所述第八随机存储器中的数据;S11、调用所述蒙哥马利模乘器,对所述第六随机存储器、所述第七随机存储器和所述第八随机存储器中的数据进行模乘运算,使用运算结果更新所述第四寄存器中的数据;S12、判断所述当前位数据是否为所述第六寄存器中位于最高位的数据,如果是,则执行步骤S13 ;否则,返回步骤S7 ;S13、将所述第四寄存器中的数据输出。本发明还提供了一种在嵌入式系统中实现大数预计算的方法,包括以下步骤:S1、读取第一寄存器中的数据,将读取到的数据写入到第一随机存储器;读取第二寄存器中的数据,将读取到的数据写入到第二随机存储器;所述第一寄存器用于存储第一数据,所述第二寄存器用于存储第二数据,所述第二数据的取值为以2为底数,以第三数据的取值为指数的幂,所述第三数据为整数;S2、调用取模模块,对所述第一随机存储器和所述第二随机存储器中的数据进行运算,将运算结果分别写入到第三寄存器和第四寄存器;所述取模模块用于将所述第一随机存储器中的数据作为模数,将所述第二随机存储器中的数据作为被模数,进行取模运算;S3、读取所述第三寄存器中的数据,将读取到的数据分别写入到第三随机存储器和第四随机存储器;读取所述第一寄存器中的数据,将读取到的数据写入到第五随机存储器;S4、调用模加模块,对所述第三随机存储器、所述第四随机存储器和所述第五随机存储器中的数据进行运算,使用运算结果更新所述第三寄存器中的数据;所述模加模块用于将所述第三随机存储器中的数据和所述第四随机存储器中的数据作为加数,将所述第五随机存储器中的数据作为模数,进行模加运算;S5、读取所述第四寄存器中的数据,将读取到的数据分别写入到第六随机存储器和第七随机存储器;读取所述第一寄存器中的数据,将读取到的数据写入到第八随机存储器;调用蒙哥马利模乘器,对所述第六随机存储器、所述第七随机存储器和所述第八随机存储器中的数据进行模乘运算,使用运算结果更新所述第四寄存器中的数据;所述蒙哥马利模乘器用于将所述第六随机存储器中的数据、所述第七随机存储器中的数据和所述第八随机存储器中的数据分别作为第一输入参数、第二输入参数和第三输入参数,进行模乘运算;根据第五寄存器中的数据,从第六寄存器中读取位于最高位的数据,将读取到的数据作为当前位数据,所述第五寄存器中的数据的初始值为预设值,所述第六寄存器用于存储所述第三数据;S6、对所述当前位数据的取值进行判断,如果所述当前位数据的取值为零,则执行步骤S9 ;如果所述当前位数据的取值为1,则执行步骤S7 ;S7、读取所述第四寄存器中的数据,使用读取到的数据更新所述第六随机存储器中的数据;读取所述第三寄存器中的数据,使用读取到的数据更新所述第七随机存储器中的数据;读取所述第一寄存器中的数据,使用读取到的数据更新所述第八随机存储器中的数据;S8、调用所述蒙哥马利模乘器,对所述第六随机存储器、所述第七随机存储器和所述第八随机存储器中的数据进行模乘运算,使用运算结果更新所述第四寄存器中的数据,并执行步骤S9 ;S9、判断所述当前位数据是否为所述第六寄存器中位于最低位的数据,如果是,则执行步骤Sll ;否则,执行步骤SlO ;S10、读取所述第四寄存器中的数据,使用读取到的数据分别更新所述第六随机存储器和所述第七随机存储器中的数据;读取所述第一寄存器中的数据,使用读取到的数据更新第八随机存储器中的数据;调用蒙哥马利模乘器,对所述第六随机存储器、所述第七随机存储器和所述第八随机存储器中的数据进行模乘运算,使用运算结果更新所述第四寄存器中的数据;所述蒙哥马利模乘器用于将所述第六随机存储器中的数据、所述第七随机存储器中的数据和所述第八随机存储器中的数据分别作为第一输入参数、第二输入参数和第三输入参数,进行模乘运算;对所述第五寄存器中的数据进行更新,根据更新后的所述第五寄存器中的数据,从所述第六寄存器中读取比所述当前位数据低一位的数据,将读取到数据作为更新后的当前位数据,并返回步骤S6;S11、将所述第四寄存器中的数据输出。本发明还提供了一种在嵌入式系统中实现大数预计算的方法,包括以下步骤:S1、读取第一寄存器中的数据,将读取到的数据写入到第一随机存储器;读取第二寄存器中的数据,将读取到的数据写入到第二随机存储器中;所述第一寄存器用于存储第一数据,所述第二寄存器用于存储第二数据,所述第二数据的取值为以2为底数,以第三数据的取值为指数的幂,所述第三数据为整数;S2、调用取模模块,对所述第一随机存储器和所述第二随机存储器中的数据进行运算,将运算结果分别写入到第三寄存器和第四寄存器;所述取模模块用于将所述第一随机存储器中的数据作为模数,将所述第二随机存储器中的数据作为被模数,进行取模运算;S3、读取所述第三寄存器中的数据,将读取到的数据分别写入到第三随机存储器和第四随机存储器;读取所述第一寄存器中的数据,将读取到的数据写入到第五随机存储器;S4、调用模加模块,对所述第三随机存储器、所述第四随机存储器和所述第五随机存储器中的数据进行运算,使用运算结果更新所述第三寄存器中的数据;所述模加模块用于将所述第三随机存储器中的数据和所述第四随机存储器中的数据作为加数,将所述第五随机存储器中的数据作为模数,进行模加运算;S5、读取所述第三寄存器中的数据,将读取到的数据分别写入到第六随机存储器和第七随机存储器;读取所述第一寄存器中的数据,将读取到的数据写入到第八随机存储器;S6、调用蒙哥马利模乘器,对所述第六随机存储器、所述第七随机存储器和所述第八随机存储器中的数据进行模乘运算,使用运算结果更新所述第三寄存器中的数据;所述蒙哥马利模乘器用于将所述第六随机存储器中的数据、所述第七随机存储器中的数据和所述第八随机存储器中的数据分别作为第一输入参数、第二输入参数和第三输入参数,进行模乘运算;S7、将第五寄存器中的数据加1,将得到的结果作为更新后的所述第五寄存器中的数据,判断所述第五寄存器中的数据是否等于所述第六寄存器中的数据的长度,如果是,则执行步骤S8 ;否则,返回步骤S5 ;所述第五寄存器中的数据的初始值为零,所述第六寄存器用于存储所述第三数据,所述第三数据的取值为2的整数次幂;S8、将所述第三寄存器中的数据输出。本发明还提供了一种在嵌入式系统中实现大数预计算的方法,包括以下步骤:S1、读取第一寄存器中的数据,将读取到的数据写入到第一随机存储器;读取第二寄存器中的数据,将读取到的数据写入到第二随机存储器;所述第一寄存器用于存储第一数据,所述第二寄存器用于存储第二数据,所述第二数据的取值为以2为底数,以第三数据的取值为指数的幂,所述第三数据为整数;S2、调用取模模块,对所述第一随机存储器和所述第二随机存储器中的数据进行运算,将运算结果分别写入到第三寄存器和第四寄存器;所述取模模块用于将所述第一随机存储器中的数据作为模数,将所述第二随机存储器中的数据作为被模数,进行取模运算;S3、读取所述第三寄存器中的数据,将读取到的数据分别写入到第三随机存储器和第四随机存储器;读取所述第一寄存器中的数据,将读取到的数据写入到第五随机存储器;S4、调用模加模块,对所述第三随机存储器、所述第四随机存储器和所述第五随机存储器中的数据进行运算,使用运算结果更新所述第三寄存器中的数据;所述模加模块用于将所述第三随机存储器中的数据和所述第四随机存储器中的数据作为加数,将所述第五随机存储器中的数据作为模数,进行模加运算;S5、读取所述第三寄存器中的数据,将读取到的数据分别写入到第六随机存储器和第七随机存储器;读取所述第一寄存器中的数据,将读取到的数据写入到第八随机存储器;S6、调用蒙哥马利模乘器,对所述第六随机存储器、所述第七随机存储器和所述第八随机存储器中的数据进行模乘运算,使用运算结果更新所述第三寄存器中的数据;所述蒙哥马利模乘器用于将所述第六随机存储器中的数据、所述第七随机存储器中的数据和所述第八随机存储器中的数据分别作为第一输入参数、第二输入参数和第三输入参数,进行模乘运算;S7、判断第五寄存器中的数据是否等于所述第六寄存器中的数据的长度,如果是,则执行步骤S9 ;否则,执行步骤S8 ;所述第五寄存器中的数据的初始值为1,所述第六寄存器用于存储所述第三数据,所述第三数据的取值为2的整数次幂;S8、将所述第五寄存器中的数据加1,将得到的结果作为更新后的所述第五寄存器中的数据,并返回步骤S5;S9、将所述第三寄存器中的数据输出。本发明实施例的技术方案,使用蒙哥马利模乘器对数据进行迭代运算,得到预计算结果,从而提高了数据处理速度。


图1为本发明实施例一中的一种在嵌入式系统中实现大数预计算的方法流程图;图2为本发明实施例二中的一种在嵌入式系统中实现大数预计算的方法流程图;图3为本发明实施例三中的一种在嵌入式系统中实现大数预计算的方法流程图;图4为本发明实施例四中的一种在嵌入式系统中实现大数预计算的方法流程图。
具体实施例方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。本实施例提供了 一种基于蒙哥马利模乘的数据处理方法,CPU (CentralProcessing Unit,中央处理器)在数据处理过程中,可调用取模模块、模加模块和蒙哥马利模乘器,其中,取模模块用于将第一随机存储器中的数据作为模数,将第二随机存储器中的数据作为被模数,进行取模运算;模加模块用于将第三随机存储器中的数据和第四随机存储器中的数据作为加数,将第五随机存储器中的数据作为模数,进行模加运算;蒙哥马利模乘器用于将第六随机存储器中的数据、第七随机存储器中的数据和第八随机存储器中的数据分别作为第一输入参数、第二输入参数和第三输入参数,进行模乘运算。此外,本实施例中,第一寄存器用于存储第一数据N,第二寄存器用于存储第二数据R=2n,η为整数,第三寄存器、第四寄存器和第五寄存器用于存储数据处理过程中的中间数据,第六寄存器用于存储第三数据,该第三数据为模长η。如图1所示,为本发明实施例一中的一种在嵌入式系统中实现大数预计算的方法流程图,包括以下步骤:步骤101,读取第一寄存器中的数据,将读取到的数据写入到第一随机存储器;读取第二寄存器中的数据,将读取到的数据写入到第二随机存储器。步骤102,调用取模模块,对第一随机存储器和第二随机存储器中的数据进行运算,将运算结果分别写入到第三寄存器和第四寄存器。本实施例中,调用取模模块进行运算后,第三寄存器中的数据记为W,第四寄存器中的数据记为 S,且 S=W=R mod No 例如,N 为 0xD99E413375024660171E3AB08CA00A3ElAA4985BEAAF8AC09F892DA9C61915945C7B4D72849EC1CD747586AB780D0B171FD8C27A5688A2E085AF6C50687AE3E0997238134D7DA34B96B8B7C0C993B4F1DF3FF6D46826460E13B0E8FAFA0BD59B2843627A4B8B253C5873FA87720D28DC3021A1898CF7DE8B4BC7525086CBFFE7CD1176663EC8EE958D59C94D60010E2F6063D5108049931454D00985B478064C2607DEB977D973C7750A19B2BC65DA102DD0A371, R 为 0x1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000,则 W 和 S 的取值均为 0X2661BECC8AFDB99FE8E1C54F735FF5C1E55B67A41550753F6076D25639E6EA6BA384B28D7B613E328B8A795487F2F4E8E0273D85A9775D1F7A5093AF97851C1F668DC7ECB2825CB46947483F366C4B0E20C0092B97D9B9F1EC4F170505F42A64D7BC9D85B474DAC3A78C05788DF2D723CFDE5E7673082174B438ADAF7934001832EE8999C137116A72A636B29FFEF1D09F9C2AEF7FB66CEBAB2FF67A4B87F9B3D9F8214688268C388AF5E64D439A25EFD22F5C8F0步骤103,读取第三寄存器中的数据,将读取到的数据分别写入到第三随机存储器和第四随机存储器;读取第一寄存器中的数据,将读取到的数据写入到第五随机存储器。步骤104,调用模加模块,对第三随机存储器、第四随机存储器和第五随机存储器中的数据进行运算,将运算结果写入到第三寄存器。本实施 例中,调用模加模块进行运算后,可得到运算结果(R mod N)+ (R mod N)mod N=2R mod N,第三寄存器中的数据W被更新为2R mod N。例如,更新后的第三寄存器中的数据 W 的取值为 0x4CC37D9915FB733FDlC38A9EE6BFEB83CAB6CF482AA0EA7EC0EDA4AC73CDD4D74709651AF6C27C651714F2A90FE5E9D1C04E7B0B52EEBA3EF4A1275F2F0A383ECD1B8FD96504B968D28E907E6CD8961C418012572FB373E3D89E2E0A0BE854C9AF793B0B68E9B5874F180AF11BE5AE479FBCBCECE61042E968715B5EF268003065DD1333826E22D4E54C6D653FFDE3A13F3855DEFF6CD9D7565FECF4970FF367B3F0428D104D187115EBCC9A87344BDFA45EB91E。步骤105,对第五寄存器中的数据进行初始化。优选地,本实施例中,可以将第五寄存器中的数据设置为I。步骤106,根据第五寄存器中的数据,从第六寄存器中读取相应位的数据。具体地,可以根据第五寄存器中的数据的取值,确定第六寄存器中的读取位置,根据该位置从第六寄存器中读取相应位的数据。优选地,本实施例中,可以根据第五寄存器中的数据得到需要读取的数据在第六寄存器中的位序,并根据该位序从第六寄存器中读取I比特位(bit)的数据,其中,位序为第六寄存器中的各个比特位数据在第六寄存器中的位置序号。例如,当第六寄存器中的数据 n=nk*2k+nk-l*2H+…+11^21+…或 0)时,转换成二进制为(nknk_r..rv..H1Iici)2,其中,nk、Iv1、Ii1、Ii1和nQ的位序分别为k、k_l、1、l和O ;第五寄存器中的数据为I时,根据该数据读取到的相应位的数据为最低位IV第五寄存器中的数据为k+Ι时,根据该数据读取到的相应位的数据为最高位nk。本实施例中,第六寄存器中的数据η的取值为1440,其二进制格式为(101 10100000) 2,初始化后,第五寄存器中的数据为I时,第一次读取到的数据为最低位O。步骤107,判断最近一次从第六寄存器中读取到的数据的取值是否为零,如果为零,则执行步骤108,否则,执行步骤111。步骤108,读取第三寄存器中的数据,将读取到的数据分别写入到第六随机存储器和第七随机存储器;读取第一寄存器中的数据,将读取到的数据写入到第八随机存储器。步骤109,调用蒙哥马利模乘器,对第六随机存储器、第七随机存储器和第八随机存储器中的数据进行模乘运算,使用运算结果更新第三寄存器中的数据。本实施例中,将蒙哥马利模乘器的三个输入参数分别设置为第三寄存器中的数据W、第三寄存器中的数据W和第一寄存器中的数据N,可模乘得到MontMul (W,W,N)=ff*ff*R_1mod N,第三寄存器中的数据W被更新为W=KW=Ktr1Iiiod N。例如,读取到的数据为Iitl时,第三寄存器中的数据W被更新为0x9986FB322BF6E67FA387153DCD7FD707956D9E905541D4FD81DB4958E79BA9AE8E12CA35ED84F8CA2E29E5521FCBD3A3809CF616A5DD747DE9424EBE5E14707D9A371FB2CA0972D1A51D20FCD9B12C38830024AE5F66E7C7B13C5C1417D0A9935EF27616D1D36B0E9E3015E237CB5C8F3F7979D9CC2085D2D0E2B6BDE4D00060CBBA266704DC45A9CA98DACA7FFBC7427E70ABBDFED9B3AEACBFD9E92E1FE6CF67E0851A209A30E22BD799350E6897BF48BD723C ;读取到的数据为Ii1时,第三寄存器中的数据W被更新为0xB2DF6A61C 70D3E5FDFDF961CBF47A2206D49897FA83E74C85ACA10123C7B917F548DF2ACD65F8DCFBC87F18F15385FC2C25365EA648C3699AA6258A75BFA3535F80EA48D2A84AF67031471D39D46FE4D80A510AD4F13029D8F9E5A6B2AFB172B431366B03761C1C7D86279FB1320849DA2A45416925A34ABFC365685A801B394C5ACCF95DF397C0FAFD88F3FED00AB38FB04D6FAD3A892095F54994F8F8EA5537256F592B5DBF9C54A316EC0D6AADCC754820E ;读取到的数据为n2时,第三寄存器中的数据W被更新为0x20ED567F6C534104D174FE6AA7D3F4FAAC78DBED0F99DB846BB54F621481A08F4305F05A1156216E11D0A863D8A9F5CF8E23562841587E02D0BDA575278210EB94B4114DE347001FC8CFF252FD543F9C81CAC8418AFFA172D8FE10E80015D891A8C536352D65380BFFA26EBEE686F51B68751145408F5637E6A4375182241C73E277C9C82DBF7A28CD6E50061EC2524BAA9E7B99297E11184764CDCACEE0987748BF1FEE1552DE7B631FC8D87C3E9AFA21AFD423 ;读取到的数据为n3时,第三寄存器中的数据W被更新为0x9FD8DlC8F4EA928E0681B472F4337574846D4F6AC3CCEBD406F29AE119E75B3D4BA2DB11A690A99287366664D8062A1F69294A188035D57CE59B6137FFD3183DED1CFB05C659E29070870C5F6852C09AA7499E0389F30CC211CE52BEF816DCA0CB3597062E90850A81378ECB99010AB950134AD5A28B2F3964A1198E21D4777A073235006DA6BE9A72FC24A2822A30A24FA9F8B673254342CDEC60F616C787FB19F4DE8D88974BC7C04907F4477C9BBAE2DBE03A ;读取到的数据为n4时,第三寄存器中的数据W被更新为0xl9B89EFA54C8B5C69A2B02086FAE826F65194FDCD7132643A1FCA3CB32697FECB16086B2E50C13A98AE7A929E577FEDEDCCF0FE21C89A6A954D2B7F4C41815A71B6168B097BC8CE38236A6C267F3F5E3EC3FE92ADFD0FECBA2BD8EA8674C81948812864F6242BBE6EE4857F4EC340420B6E44FA5A61C6789C351C7B16393CD8B5F5EB78CBB8B4D56AF4BD2A3AA2CF706E458024A386020D849D7870656AAEF0D9AAEA154EC42C08B0AB00426739C7C94DE0CA196 ;读取到的数据为n5时,第三寄存器中的数据W被更新为0x737AD2CCAEA97D279F22DE4C575118ECBF39F9E41F1BDA8C740677C14A8FBAA19CBB5DA2125FB13BBD3815EB7DA6D6454A4716A0E71BF59F578DE159809F82EF52AA42DD0452155DF6AE438506C7C7B0C28921EA7CE4EB5BD6C88362FF45F9DF3999B591A03AEC9B305B0753E40AC3928973836BF12119DA294FF815EAF2F8ACFB2B436AFA9BED27EF69C68AB81A059BC7BD678A82BCD2CEF9DFF577CC8F33E1B9822B8E3F0D5804A225A44B1EE53CB6EEF93848 ;读取到的数据为n6时,第三寄存器中的数据W被更新为0xD33D4904E41AC66FB543E22D002A68946486D522E59CCD6C1C59A81ED619FA6D095A98DDC04A47B42576D3C91DA81498F59B59CBB1753C7603979261A33A7208167F0F1CEA375139E8DD99D04F2423E4A6EE10F39AE347A0AEB5444625AD2574545E236EEA5174DEBF82EFF3DC5405971FC1212EC726E49B2BE7CE6AF543ACD508872EA4DC5B38A2C2742E4AA80A7A9D63B190D39B3C095753D1EBE8725A9B711437D93B585539FB3948163775F8C15EAD65C935 ;读取到的数据为n7时,第三寄存器中的数据W被更新为0xlAD2EA8F41E8E7D6C06D04317F406C438950CF08918357FFB4BA6C14372740E319D5FB082ECDD03D741FF45168AA01EA8112D1F1BE57EDE660D1DD510D1B1E9F4C4355D690F864BC2644247AD1E254EF85C106ED14FAC18327BB8DD7441D0FB68D5F1B0E761988D72C87843803896D0B76A5EB674C9D4384BDA76861713AE8962AD204631EC1ABA0843F66E49E6D2EFE5DBA80A95DF371990BF14A86DC5AD5F67125B9696DF601E04DE091214B5F82F5B47457EF ;读取到的数据为n8时,第三寄存器中的数据W被更新为0x4AF096BR)6BE71B157C1B12A7A39EC6FD9DDBBC4E8B8C5FA317562B31DFB0FED8C71B4D37D5F9F000FCC0BFDD49CBA1591D619F615098ED7D5788662AEEA2443CE8F3ABD8B766E928D9CF9F0D0E94AA0B7DI79DFF17I5AA215B400150F331BA33514DF597D677D8490E0E0C73219E0907600EB08A876A0F49AAB3B14E2F728C54192A8480B216EC1BCE54B5DADFC1581AC04FCB87ABFFDB1E854511242AB801366BFE0C01C5639878D658BDE44CC6237DB4330BD ;读取到的数据为n9时,第三寄存器中的数据W被更新为0x956CB88B112FlDCB30309A00C50A3098B51AABC48B94E89DDF0F8582DCB07371D7194494E08EA453A528616950ABB1B65176956399E6FBC74BD334812D9DA3D3B5B229BCD643307D7E52DADC3E64C61874EB307BD62CB6A77E4AA893A2FCF9A64759D9B88E6E676511AC5101F1F358231652B00D78AA05AA0AFB71F161AA89CF0DEAE77CCD412441620B35E3D3D3728CAA84368ACDF33538BE766BAFA60F6CD40C867FB024363D1489B87D604936EEB7D44034F5 ;读取到的数据为n1(l时,第三寄存器中的数据W被更新为0xCDE0AC6F912257FF9A51B338A27E951CBE0A5B3A790CA56E2488CED7EDCA526900012803FCC3A6EBF9819D5490F2438DC50DB41B48B19C2DE714895E8853334269ED374748BB9EE99B81FB6A7CC97B64BD1CDB14AA48C1677BB46D7C06770FA8608E0D74984DE085CE5CF0ADDB3EE4271D8E93D9949D553E34456CA8A9E41DA95744EB840A81498E081193048734C370CDECECBE976FE7A9622B40E805A7881184C2F7FE85357CA13FB01C2EB1A7159ED229CC99。
步骤110,对第五寄存器中的数据进行更新,并返回步骤106。具体地,可以将第五寄存器中的数据加预设步长,例如1,作为更新后的第五寄存器中的数据。步骤111,读取第四寄存器中的数据,使用读取到的数据更新第六随机存储器中的数据;读取第三寄存器中的数据,使用读取到的数据更新第七随机存储器中的数据;读取第一寄存器中的数据,使用读取到的数据更新第八随机存储器中的数据。步骤112,调用蒙哥马利模乘器,对第六随机存储器、第七随机存储器和第八随机存储器中的数据进行模乘运算,使用运算结果更新第四寄存器中的数据。本实施例中,将蒙哥马利模乘器的三个输入参数分别设置为第四寄存器中的数据S、第三寄存器中的数据W和第一寄存器中的数据N,可模乘得到MontMul (S,W,N)=S-W^R-1Hiod N,将模乘结果存储到第四寄存器后,第四寄存器中的数据S被更新为S*W*
R 1Iiiod No读取到的数据为n5时,其取值为1,第四寄存器中的数据更新为0xl9B89EFA54C8B5C69A2B02086FAE826F65194FDCD7132643A1FCA3CB32697FECB16086B2E50C13A98AE7A929E577FEDEDCCF0FE21C89A6A954D2B7F4C41815A71B6168B097BC8CE38236A6C267F3F5E3EC3FE92ADFD0FECBA2BD8EA8674C81948812864F6242BBE6EE4857F4EC340420B6E44FA5A61C6789C351C7B16393CD8B5F5EB78CBB8B4D56AF4BD2A3AA2CF706E458024A386020D849D7870656AAEF0D9AAEA154EC42C08B0AB00426739C7C94DE0CA196 ;读取到的数据为n7时,其取值为1,第四寄存器中的数据更新为0xCDA46337DD938E5CBBE5BD34A433D49223AEDC489354AEA5961317A372FF02A2DE00FC155C91FD4629CECF48ABA3E6B5FB6E47D192931C41F5D22579A187F99061FBA714BE6C8BF44B6E2F4DA3F9D549B7CD638227182DE2D309405178EC7DD8DE2C05EAD5F073636C11A56FD0A7E6FC77847B4090EF0F13EE529A47CB9003EC4D96796ABAB10F9E9EE64D02EF6B8ED46DB07E0C32A6D398DB4126A61A592E7DDE02215134E7AE35902F525D3A96C5B45CEDEAA4 ;读取到的数据为n8时,其取值为1,第四寄存器中的数据更新为0xBCA266809D0887DFDD16887E3D061AFD601DED198DE11BA3196241D5C647615002B30D1FA2AC61D8EE8A2493ABD4D0D8C48D6255F7CC043070E385A4DA0D1A0EC746A9BA501D403162D185AD4A69C619B60B217060A9B23F41296DF95852A4373DD5D71D7FCCF7DD9E3F26432F41CF6CA2D726EF5B49C63FF57D535C58BB42D87BB258E6804FF5730CF3D71276305A0630359656CB5DA6E5A095A45F00F724B6B181C37A9830E456947B3AC5F249D4D723D6E34D ;读取的数据为n1Q时,其取值为1,第四寄存器中的数据更新为0xB83C9F28ClE3054ABC74607F8D0E9BF7749570117F35B79B891169D963F693E928F26FC3422F7EB469E4360872C2C1122A27EA331D8EA13B559CF48F5F60573FDCAAAA8F83103CD6A5FF4E6AB3B6F6A4C2C073CEBC2E12EEC89CF8FB0CD4EF713C354FE5C3D7E60E5D2DA4D7C82D181B4B1DEF3DE585A616398CACE990EBDAF23C441DD72D89D1A295163B6337F5AFB59FA35E77FA7EDF391F257220D0D5BB61395D26826690AD1297D714B5D114A2CBD0A814E7。
步骤113,判断最近一次从第六寄存器中读取到的数据是否为第六寄存器中位于最高位的数据,如果是,则执行步骤114 ;否则,返回步骤108。具体地,可以判断第五寄存器中的数据的取值是否等于第六寄存器中的数据的长度,如果是,则确定读取到的数据为第六寄存器中位于最高位的数据;否则,确定读取到的数据不是第六寄存器中位于最高位的数据。步骤114,将第四寄存器中的数据输出。本实施例中,输出的运算结果为0XB83C9F28C1E3054ABC74607F8D0E9BF7749570117F35B79B891169D963F693E928F26FC3422F7EB469E4360872C2C1122A27EA331D8EA13B559CF48F5F60573FDCAAAA8F83103CD6A5FF4E6AB3B6F6A4C2C073CEBC2E12EEC89CF8FB0CD4EF713C354FE5C3D7E60E5D2DA4D7C82D181B4B1DEF3DE585A616398CACE990EBDAF23C441DD72D89D1A295163B6337F5AFB59FA35E77FA7EDF391F257220D0D5BB61395D26826690AD1297D714B5D114A2CBD0A814E7。本发明实施例的技术方案,根据模长对应的二进制数的各个数据位的取值,通过蒙哥马利模乘器进行迭代运算,能够在模长为任意值时,得到大数预计算结果,从而提高了数据处理速度。需要说明的是,在本发明的其他实施方式中,也可以将第五寄存器中的数据初始化为除I之外的其他数值,该数值与第六寄存器中的最低位的数据的位置相对应;还可以在对第五寄存器中的数据更新时,对该数据加上除I之外的其他数值,根据更新之后的第五寄存器中的数据读取到的第六寄存器中的数据,比根据更新之前的第五寄存器中的数据读取到的第六寄存器中的数据高一位,同样可以实现本发明的发明目的。如图2所示为,本发明实施例二中的一种在嵌入式系统中实现大数预计算的方法流程图,本实施例中,第六寄存器中的存储的模长n=2k,实现大数预计算的方法包括以下步骤:步骤201,读取第一寄存器中的数据,将读取到的数据写入到第一随机存储器;读取第二寄存器中的数据,将读取到的数据写入到第二随机存储器。步骤202,调用取模模块,对第一随机存储器和第二随机存储器中的数据进行运算,将运算结果写入到第三寄存器。本实施例中,调用取模模块进行运算后,第三寄存器中的数据记为W=R mod N。步骤203,读取第三寄存器中的数据,将读取到的数据分别写入到第三随机存储器和第四随机存储器;读取第一寄存器中的数据,将读取到的数据写入到第五随机存储器。步骤204,调用模加模块,对第三随机存储器、第四随机存储器和第五随机存储器中的数据进行运算,将运算结果写入到第三寄存器。本实施例中,调用模加模块进行运算后,可得到运算结果(R mod N)+ (R mod N)mod N=2R mod N,第三寄存器中的数据W被更新为2R mod N。步骤205,对第五寄存器中的数据进行初始化。优选地,本实施例中,可以将第五寄存器中的数据设置为零。步骤206,读取第三寄存器中的数据,将读取到的数据分别写入到第六随机存储器和第七随机存储器;读取第一寄存器中的数据,将读取到的数据写入到第八随机存储器。步骤207,调用蒙哥马利模乘器,对第六随机存储器、第七随机存储器和第八随机存储器中的数据进行模乘运算,使用运算结果更新第三寄存器中的数据。本实施例中,将蒙哥马利模乘器的三个输入参数分别设置为第三寄存器中的数据W、第三寄存器中的数据W和第一寄存器中的数据N,可模乘得到MontMul (W,W,N) =W*W*R-1Hiod N,将模乘结果存储到第三寄存器后,第三寄存器中的数据W被更新为W*W* Ir1Hiod N。步骤208,对第五寄存器中的数据进行更新。具体地,可以将第五寄存器中的数据加1,作为更新后的第五寄存器中的数据。步骤209,判断第五寄存器中的数据是否等于第六寄存器中的数据的长度,如果是,则执行步骤210 ;否则,返回步骤206。步骤210,将第三寄存器中的数据输出。本发明实施例的技术方案,通过蒙哥马利模乘器进行迭代运算,能够在模长为2k时,得到大数预计算结果,从而提高了数据处理速度。

需要说明的是,在本发明的其他实施方式中,也可以将第五寄存器中的数据初始化为1,执行完步骤206至步骤207后,执行步骤209,判断第五寄存器中的数据是否等于第六寄存器中的数据的长度,如果是,则将第三寄存器中的数据作为运算结果输出;否则,将第五寄存器中的数据加1,作为更新后的第五寄存器中的数据,执行步骤206至步骤207,并执行步骤209,依次循环,同样可以实现本发明的发明目的。如图3所示为,本发明实施例三中的一种在嵌入式系统中实现大数预计算的方法流程图,包括以下步骤:步骤301,读取第一寄存器中的数据,将读取到的数据写入到第一随机存储器;读取第二寄存器中的数据,将读取到的数据写入到第二随机存储器。步骤302,调用取模模块,对第一随机存储器和第二随机存储器中的数据进行运算,将运算结果分别写入到第三寄存器和第四寄存器。本实施例中,调用取模模块进行运算后,第三寄存器中的数据记为W,第四寄存器中的数据记为S,且S=W=R mod No步骤303,读取第三寄存器中的数据,将读取到的数据分别写入到第三随机存储器和第四随机存储器;读取第一寄存器中的数据,将读取到的数据写入到第五随机存储器。步骤304,调用模加模块,对第三随机存储器、第四随机存储器和第五随机存储器中的数据进行运算,将运算结果写入到第三寄存器。本实施例中,调用模加模块进行运算后,可得到运算结果(R mod N)+ (R mod N)mod N=2R mod N,第三寄存器中的数据W被更新为2R mod N。步骤305,对第五寄存器中的数据进行初始化。优选地,本实施例中,可以将第五寄存器中的数据设置为零。步骤306,根据第五寄存器中的数据,从第六寄存器中读取相应位的数据。具体地,可以根据第五寄存器中的数据的取值,确定第六寄存器中的读取位置,根据该位置从第六寄存器中读取相应的数据。优选地,本实施例中,可以将第五寄存器中的数据作为需要读取的数据在第六寄存器中的位序,从第六寄存器中读取I比特位(bit)的数据,其中,位序为第六寄存器中的各个比特位数据在第六寄存器中的位置序号。例如,当第六寄存器中的数据Γ^η,^+η,-Ι^Η+...+!^#+...+1^21+ ° Ui=I 或0)时,转换成二进制为(nknk_r“iv..]!-。);^其中,nk、Πη、叫、Ii1和η0的位序分别为k、k_l、1、I和O ;第五寄存器中的数据为O时,根据该数据读取到的相应位的数据为最低位IV第五寄存器中的数据位为k时,根据该数据读取到的相应位的数据为最高位nk。
步骤307,判断最近一次从第六寄存器中读取到的数据的取值是否为零,如果为零,则执行步骤310,否则,执行步骤308。步骤308,将第三寄存器中的数据写入到第四寄存器。步骤309,判断最近一次从第六寄存器中读取到的数据是否为第六寄存器中位于最高位的数据,如果是,则执行步骤316 ;否则,执行步骤310。步骤310,对第五寄存器中的数据进行更新,根据第五寄存器中的数据,从第六寄存器中读取相应位的数据。具体地,可以将第五寄存器中的数据加1,作为更新后的第五寄存器中的数据。步骤311,读取第三寄存器中的数据,将读取到的数据分别写入到第六随机存储器和第七随机存储器;读取第一寄存器中的数据,将读取到的数据写入到第八随机存储器。步骤312,调用蒙哥马利模乘器,对第六随机存储器、第七随机存储器和第八随机存储器中的数据进行模乘运算,使用运算结果更新第三寄存器中的数据。本实施例中,将蒙哥马利模乘器的三个输入参数分别设置为第三寄存器中的数据W、第三寄存器中的数据W和第一寄存器中的数据N,可模乘得到MontMul (W,W,N)=W^R-1H1Od N,将模乘结果存储到第三寄存器后,第三寄存器中的数据W被更新为
R 1Iiiod No步骤313,判断最近一次从第六寄存器中读取到的数据的取值是否为零,如果为零,则返回步骤310,否则,执行步骤314。

步骤314,读取第四寄存器中的数据,将读取到的数据写入到第六随机存储器;读取第三寄存器中的数据,根据读取到的数据更新第七随机存储器中的数据;读取第一寄存器中的数据,根据读取到的数据更新第八随机存储器中的数据。步骤315,调用蒙哥马利模乘器,对第六随机存储器、第七随机存储器和第八随机存储器中的数据进行模乘运算,使用运算结果更新第四寄存器中的数据,并返回步骤309。本实施例中,将蒙哥马利模乘器的三个输入参数分别设置为第四寄存器中的数据S、第三寄存器中的数据W和第一寄存器中的数据N,可模乘得到MontMul (S,W,N) =S*W*R-1Hiod N,将模乘结果存储到第四寄存器后,第四寄存器中的数据S被更新为S*W* R-1Hiod N。步骤316,将第四寄存器中的数据输出。本发明实施例的技术方案,根据模长对应的二进制数的各个数据位的取值,通过蒙哥马利模乘器进行迭代运算,能够在模长为任意值时,得到大数预计算结果,从而提高了数据处理速度。需要说明的是,在本发明的其他实施方式中,也可以将第五寄存器中的数据初始化为除零之外的其他数值,该数值与第六寄存器中的最低位的数据的位置相对应;还可以在对第五寄存器中的数据更新时,对该数据加上除I之外的其他数值,根据更新之后的第五寄存器中的数据读取到的第六寄存器中的数据,比根据更新之前的第五寄存器中的数据读取到的第六寄存器中的数据高一位,同样可以实现本发明的发明目的。如图4所示为,本发明实施例四中的一种在嵌入式系统中实现大数预计算的方法流程图,包括以下步骤:步骤401,读取第一寄存器中的数据,将读取到的数据写入到第一随机存储器;读取第二寄存器中的数据,将读取到的数据写入到第二随机存储器。
步骤402,调用取模模块,对第一随机存储器和第二随机存储器中的数据进行运算,将运算结果分别写入到第三寄存器和第四寄存器。本实施例中,调用取模模块进行运算后,第三寄存器中的数据记为W,第四寄存器中的数据记为 S,且 S=W=R mod No 例如,N 为 0xD99E413375024660171E3AB08CA00A3ElAA4985BEAAF8AC09F892DA9C61915945C7B4D72849EC1CD747586AB780D0B171FD8C27A5688A2E085AF6C50687AE3E0997238134D7DA34B96B8B7C0C993B4F1DF3FF6D46826460E13B0E8FAFA0BD59B2843627A4B8B253C5873FA87720D28DC3021A1898CF7DE8B4BC7525086CBFFE7CD1176663EC8EE958D59C94D60010E2F6063D5108049931454D00985B478064C2607DEB977D973C7750A19B2BC65DA102DD0A371,R 为 0x1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000,则 W 和 S 的取值均为 0X2661BECC8AFDB99FE8E1C54F735FF5C1E55B67A41550753F6076D25639E6EA6BA384B28D7B613E328B8A795487F2F4E8E0273D85A9775D1F7A5093AF97851C1F668DC7ECB2825CB46947483F366C4B0E20C0092B97D9B9F1EC4F170505F42A64D7BC9D85B474DAC3A78C05788DF2D723CFDE5E7673082174B438ADAF7934001832EE8999C137116A72A636B29FFEF1D09F9C2AEF7FB66CEBAB2FF67A4B87F9B3D9F8214688268C388AF5E64D439A25EFD22F5C8F0步骤403,读取第三寄存器中的数据,将读取到的数据分别写入到第三随机存储器和第四随机存储器;读取第一寄存器中的数据,将读取到的数据写入到第五随机存储器。步骤404,调用模加模块,对第三随机存储器、第四随机存储器和第五随机存储器中的数据进行运算,将运算结果写入到第三寄存器。本实施例中,调用模加模块进行运算后,可得到运算结果(R mod N)+ (R mod N)mod N=2R mod N,第三寄存器中的数据W被更新为2R mod N。本实施例中,更新后的第三寄存器中的数据W的取值为0x4CC37D9915FB733FDlC38A9EE6BFEB83CAB6CF482AA0EA7EC0EDA4AC73CDD4D74709651AF6C27C651714F2A90FE5E9D1C04E7B0B52EEBA3EF4A1275F2F0A383ECD1B8FD96504B968D28E907E6CD8961C418012572FB373E3D89E2E0A0BE854C9AF793B0B68E9B5874F180AF11BE5AE479FBCBCECE61042E968715B5EF268003065DD1333826E22D4E54C6D653FFDE3A13F3855DEFF6CD9D7565FECF4970FF367B3F0428D104D187115EBCC9A87344BDFA45EB9IE ο步骤405,对第五寄存器中的数据进行初始化。优选地,本实施例中,可以将第五寄存器中的数据设置为第六寄存器中的数据的长度。步骤406,根据第五寄存器中的数据,从第六寄存器中读取相应位的数据。具体地,可以根据第五寄存器中的数据的取值,确定第六寄存器中的读取位置,根据该位置从第六寄存器中读取相应的数据。优选地,本实施例中,可以根据第五寄存器中的数据得到需要读取的数据在第六寄存器中的位序,并根据该位序从第六寄存器中读取I比特位(bit)的数据,其中,位序为第六寄存器中的各个比特位数据在第六寄存器中的位置序号。
例如,当第六寄存器中的数据+或O)时,转换成二进制为(nknk_r“iv..]!-。);^其中,nk、Πη、叫、Ii1和η0的位序分别为k、k_l、
1、I和O ;第五寄存器中的数据为I时,根据该数据读取到的相应位的数据为最低位IV第五寄存器中的数据为k+Ι时,根据该数据读取到的相应位的数据为最高位nk。本实施例中,第六寄存器中的数据η的取值为1440,其二进制格式为(101 10100000) 2,初始化后,第五寄存器中的数据为11时,第一次读取到的数据为I。步骤407,读取第四寄存器中的数据,将读取到的数据分别写入到第六随机存储器和第七随机存储器;读取第一寄存器中的数据,将读取到的数据写入到第八随机存储器。步骤408,调用蒙哥马利 模乘器,对第六随机存储器、第七随机存储器和第八随机存储器中的数据进行模乘运算,使用运算结果更新第四寄存器中的数据。本实施例中,将蒙哥马利模乘器的三个输入参数分别设置为第四寄存器中的数据S、第四寄存器中的数据S和第一寄存器中的数据N,可模乘得到MontMul (S,S,N)=S-S-R-1Hiod N,将模乘结果存储到第四寄存器后,第四寄存器中的数据S被更新为S*S*
R 1Iiiod No例如,读取到的数据为n1(l时,更新后的第四寄存器中的数据为0x2661BECC8AFDB99FE8E1C54F735FF5C1E55B67A41550753F6076D25639E6EA6BA384B28D7B613E328B8A795487F2F4E8E0273D85A9775D1F7A5093AF97851C1F668DC7ECB2825CB46947483F366C4B0E20C0092B97D9B9F1EC4F170505F42A64D7BC9D85B474DAC3A78C05788DF2D723CFDE5E7673082174B438ADAF7934001832EE8999C137116A72A636B29FFEF1D09F9C2AEF7FB66CEBAB2FF67A4B87F9B3D9F8214688268C388AF5E64D439A25EFD22F5C8F ;读取到的数据为n9时,更新后的第四寄存器中的数据S为0x9986FB322BF6E67FA387153DCD7FD707956D9E905541D4FD81DB4958E79BA9AE8E12CA35ED84F8CA2E29E5521FCBD3A3809CF616A5DD747DE9424EBE5E14707D9A371FB2CA0972D1A51D20FCD9B12C38830024AE5F66E7C7B13C5C1417D0A9935EF27616D1D36B0E9E3015E237CB5C8F3F7979D9CC2085D2D0E2B6BDE4D00060CBBA266704DC45A9CA98DACA7FFBC7427E70ABBDFED9B3AEACBFD9E92E1FE6CF67E0851A209A30E22BD799350E6897BF48BD723C ;读取到的数据为n8时,更新后的第四寄存器中的数据S为0xB2DF6A61C5D70D3E5FDFDF961CBF47A2206D49897FA83E74C85ACA10123C7B917F548DF2ACD65F8DCFBC87F18F15385FC2C25365EA648C3699AA6258A75BFA3535F80EA48D2A84AF67031471D39D46FE4D80A510AD4F13029D8F9E5A6B2AFB172B431366B03761C1C7D86279FB1320849DA2A45416925A34ABFC365685A801B394C5ACCF95DF397C0FAFD88F3FED00AB38FB04D6FAD3A892095F54994F8F8EA5537256F592B5DBF9C54A316EC0D6AADCC754820E ;读取到的数据为n7时,更新后的第四寄存器中的数据S为0x83B559FDB14D041345D3F9AA9F4FD3EAB1E36FB43E676E11AED53D885206823D0C17C168455885B84742A18F62A7D73E388D58A10561F80B42F695D49E0843AE52D045378D1C007F233FC94BF550FE72072B21062BFE85CB63F843A000576246A314D8D4B594E02FFE89BAFB9A1BD46DA1D44515023D58DF9A90DD46089071CF89DF2720B6FDE8A335B940187B09492EAA79EE64A5F844611D93372B3B8261DD22FC7FB8554B79ED8C7F2361F0FA6BE886BF508C ;读取到的数据为n6时,更新后的第四寄存器中的数据S为0x022679CABF39B7DD61E056533B7B7BBA371BE1D0DD007BA47277561B1B3BD915EE138C634B04CFE96C05DFBAF7257E9B7186D1AA2A5F7800DBA36B3CC636393F1B4675E65C67A93B75D95B751291EE41D5A92FE35DBC53EED619E9AA1D8AF0B66906AD17C5956C8C1098B4084FD82DE72EA60D27C149F2C63EAE46BFB5A9E2F326588355E2CBD927CB8D336BEA5A8DE1382A0F953BCECFF7E8E67DF98FD8D6CB81C5BF5524E6B051956745414873E5C04DAA0CC1 ;读取到的数据为n5时,更新后的第四寄存器中的数据S为0xlABC6003530F5BF6FAF99131099398E735CDBFA97E81E5F22AE25E2C1091FE972F4CC1CE0514303E4C6002288744F614BB2E727D0016A4D06BD6843BF9039D13FA9904FD47457D3A7530BE02241C2579E9A404682790478E9E720BF409B96F2908FEC6ED58AC08CD4A39A6AF9F60CB234564F25341D7DCD9D7A375FA6328E3B63674F26A00F258357F69A4594D719CB34365D05376F3722D1F1E64A17C04F1B30334381D94E9CB91B929D14D9739074A2BA45E5C ;读取到的数据为n4时,更新后的第四寄存器中的数据S为0x8A7128R)EF38233D76C6D8AFBA66D0C2473B5F689344E19E7DEA9CEB7DCBAC9B5C7BDB9075052C77595E892754BD98B6E437FC212FF564D33A51F952230B997C066C0165712821EC0CD43B3063D4D331293B80E37D9FE28D447D29D510C40417796EEBF09DCE40240969D87E9B29608CE9479B72F989D02884CF0B54D2861DD96FC66FB6C52974CAB7288CB5CF927BDD4A70C5AA27F3E1BB2BF491D6C3C67FEF1C2F5716539F569535F1E601A4C90ED5E3D38EA5 ;读取到的数据为n3时,更新后的第四寄存器中的数据S为0x531BC239F295E4934C5AF1EF888563C5F0DA69A5B3F228983F89EDC6E3426D11944D372E299D28020DD9B0F0E613A3E90821CD5D81D1C8A21B6915F0A0274A73DCAB3E080D16581C3ACA2D604EAF0A347348D29B40B756A8196CFBBA737F2F2C1C7CE95D75C8AE953DBCB0FEAC60E7A71857074D41C4BBFC0F5528115CAAB9877292A206A97553F0AC735212B83858203754DF69D1042C07C888D30CBA570898D37F0C0565ADF0C7E16C9EA6411774CBCB39FDCA ;读取到的数据为n2时,更新后的第四寄存器中的数据S为0x0871B99B9478368B4A9AD8631C3E72E08A91D37611FD998D0517BF8757E0E5DA896A8AB60E53B8814CA9F38FE671FBC903059E4E37450546CAF563F65A7B644FDA8A206C8944157534F62E8D6AA548B138069FCD7389569C4D721BD7B9395A3379E0D41709DF4ED1BA93B8F2461B57D530959E69CE9B8591EF27CF0D5BA1BD1F8D446C8685F1DE91649351CFB0CEEC751E76F59A1E8CE702D4DFD9E20A8A263C7F36F4985A1BC08236CAF0CCFE95893670D5D406 ;读取到的数据为Ii1时,更新后的第四寄存器中的数据S为0x07010678BB199C55EA69B55807E60458299B2374A9137F6E61DE2749010B02232A67B08843C0F24CF146863C8457D7AF3508301D6A74686D402C8E4F4E99DD4C63FD9BF70CE8773E0919B98891080EB666B21621792BD0D02356A816CD6BCEE83F15C2AE86B08A081C35C3D6F14631BD80A061BC2I2B398BC0CE83A6A2F202B0898C2564AA9AF159E236F787B8747D31A82C5979E69534CF0BAF78F9A99A1AF99D82BC6922BF77D87F4C0E55E3793A2CC29E0C14 ;读取到的数据为Iitl时,更新后的第四寄存器中的数据S为0xB83C9F28ClE3054ABC74607F8D0E9BF7749570117F35B79B891169D963F693E928F26FC3422F7EB469E4360872C2C1122A27EA331D8EA13B559CF48F5F60573FDCAAAA8F83103CD6A5FF4E6AB3B6F6A4C2C073CEBC2E12EEC89CF8FB0CD4EF713C354FE5C3D7E60E5D2DA4D7C82D181B4B1DEF3DE585A616398CACE990EBDAF23C441DD72D89D1A295163B6337F5AFB59FA35E77FA7EDF391F257220D0D5BB61395D2
6826690AD1297D714B5D114A2CBD0A814E7。步骤409,判断最近一次从第六寄存器中读取到的数据的取值是否为零,如果为零,则执行步骤412,否则,执行步骤410。步骤410,读取第四寄存器中的数据,根据读取到的数据更新第六随机存储器中的数据;读取第三寄存器中的数据,根据读取到的数据更新第七随机存储器中的数据;读取第一寄存器中的数据,根据读取到的数据更新第八随机存储器中的数据。步骤411,调用蒙哥马利模乘器,对第六随机存储器、第七随机存储器和第八随机存储器中的数据进行模乘运算,使用运算结果更新第四寄存器中的数据。本实施例中,将蒙哥马利模乘器的三个输入参数分别设置为第四寄存器中的数据
S、第三寄存器中的数据W和第一寄存器中的数据N,可模乘得到MontMul (S,W,N) =S*W*R-1Hiod N,将模乘结果存储到第四寄存器后,第四寄存器中的数据S被更新为S*W* R-1Hiod N。读取到的数据为n1(l时,其取值为1,更新后的第四寄存器中的数据S为0x4CC37D9915FB733FD1C38A9EE6BFEB83CAB6CF482AA0EA7EC0EDA4AC73CDD4D74709651AF6C27C651714F2A90FE5E9D1C04E7B0B52EEBA3EF4A1275F2F0A383ECD1B8FD96504B968D28E907E6CD8961C418012572FB373E3D89E2E0A0BE854C9AF793B0B68E9B5874F180AF11BE5AE479FBCBCECE61042E968715B5EF268003065DD1333826E22D4E54C6D653FFDE3A13F3855DEFF6CD9D7565FECF4970FF367B3F0428D104D187115EBCC9A87344BDFA45EB91E ;读取到的数据为n8时,其取值为1,更新后的第四寄存器中的数据S为0x8C20939016ABD41CA8A1847BACDE85062635FAB714A0F228F12C66765E5FE18EA22DCE72D50DFD4E2B038937A61D65A865ABE4517E40758CADA55860E63D1089D27DE535CCD76613374D7122DDA6D90ABBC1534CF277DFF7276E53B9DC4A20932E42C45314E39E47373CCA6C8419182D0B23A71EA02CD5DE0C3I1A5C8484037F5C79E338ECF584629205E7D11FD8F327I192349D755DBE0FBDEE9FACEAA716FE80DCCF31AD92442C158A492AC5477BA960D860AB ;读取到的数据为n7时,其取值为1,更新后的第四寄存器中的数据S为0x2DCC72C7ED97C1C67489B8A4B1FF9D974922470C921F5162BE214D66DDF3EEE5BBB4355E061249A31A0FBC734D42A3655141EEC7B43B4D36003DBF58D395A37C0C2E525BCCBA5DB2AFC6DAD7210E47F22F164B37EFD6C588B43F9E4506A2EEF21DE64F2F1F9E9B23A49F7B6FC22A7FFF1386E8A07782D333E95A683B8A54E3B746ACD7DB2F32E2B0DE18B6E39611842DF49007B8CBA6F5ADE65664D0C28CBD6E1FFI20B732BD80I3A3F42DI1258EFDC0DFADFDA7 ;读取到的数据为n5时,其取值为1,更新后的第四寄存器中的数据S为0X3578C006A61EB7EDF5F32262132731CE6B9B7F52FD03CBE455C4BC582123FD2E5E99839C0A28607C98C004510E89EC29765CE4FA002D49A0D7AD0877F2073A27F53209FA8E8AFA74EA617C0448384AF3D34808D04F208F1D3CE417E81372DE5211FD8DDAB158119A94734D5F3EC196468AC9E4A683AFB9B3AF46EBF4C651C76C6CE9E4D401E4B06AFED348B29AE3396686CBA0A6EDE6E45A3E3CC942F809E3660668703B29D397237253A29B2E720E945748BCB8o需要说明的是,执行完本步骤后,继续执行步骤412。步骤412,判断最近一次从第六寄存器中读取到的数据是否为第六寄存器中位于最低位的数据,如果是,则执行步骤414 ;否则,执行步骤413。
步骤413,对第五寄存器中的数据进行更新,并返回步骤407。具体地,可以将第五寄存器中的数据减1,作为更新后的第五寄存器中的数据。步骤414,将第四寄存器中的数据输出。本发明实施例的技术方案,根据模长对应的二进制数的各个数据位的取值,通过蒙哥马利模乘器进行迭代运算,能够在模长为任意值时,得到大数预计算结果,从而提高了数据处理速度。需要说明的是,在本发明的其他实施方式中,也可以将第五寄存器中的数据初始化为除第六寄存器中的数据的长度之外的其他数值,该数值与第六寄存器中的最高位的数据的位置相对应;还可以在对第五寄存器中的数据更新时,对该数据减去除I之外的其他数值,根据更新之后的第五寄存器中的数据读取到的第六寄存器中的数据,比根据更新之前的第五寄存器中的数据读取到的第六寄存器中的数据低一位,同样可以实现本发明的发明目的。结合本文中所公开的实施例描述的方法中的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。以上所述,仅为本发明的具体实施方式
,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
权利要求
1.一种在嵌入式系统中实现大数预计算的方法,其特征在于,包括以下步骤: 51、读取第一寄存器中的数据,将读取到的数据写入到第一随机存储器;读取第二寄存器中的数据,将读取到的数据写入到第二随机存储器;所述第一寄存器用于存储第一数据,所述第二寄存器用于存储第二数据,所述第二数据的取值为以2为底数,以第三数据的取值为指数的幂,所述第三数据为整数; 52、调用取模模块,对所述第一随机存储器和所述第二随机存储器中的数据进行运算,将运算结果分别写入到第三寄存器和第四寄存器;所述取模模块用于将所述第一随机存储器中的数据作为模数,将所述第二随机存储器中的数据作为被模数,进行取模运算; 53、读取所述第三寄存器中的数据,将读取到的数据分别写入到第三随机存储器和第四随机存储器;读取所述第一寄存器中的数据,将读取到的数据写入到第五随机存储器; 54、调用模加模块,对所述第三随机存储器、所述第四随机存储器和所述第五随机存储器中的数据进行运算,使用运算结果更新所述第三寄存器中的数据;所述模加模块用于将所述第三随机存储器中的数据和所述第四随机存储器中的数据作为加数,将所述第五随机存储器中的数据作为模数,进行模加运算; 55、根据第五寄存器中的数据,从第六寄存器中读取位于最低位的数据,将读取到的数据作为当前位数据,所述第五寄存器中的数据的初始值为预设值,所述第六寄存器用于存储所述第三数据; 56、对所述当前位数据的取值进行判断,如果所述当前位数据的取值为零,则执行步骤S7 ;如果所述当前位数据的取值为1,则执行步骤SlO ; 57、读取所述第三寄存器中的数据,将读取到的数据分别写入到第六随机存储器和第七随机存储器;读取所述第一寄存器中的数据,将读取到的数据写入到第八随机存储器; 58、调用蒙哥马利模乘器,对所述第六随机存储器、所述第七随机存储器和所述第八随机存储器中的数据进行模乘运算,使用运算结果更新所述第三寄存器中的数据;所述蒙哥马利模乘器用于将所述第六随机存储器中的数据、所述第七随机存储器中的数据和所述第八随机存储器中的数据分别作为第一输入参数、第二输入参数和第三输入参数,进行模乘运算; 59、对所述第五寄存器中的数据进行更新,根据更新后的所述第五寄存器中的数据,从所述第六寄存器中读取比所述当前位数据高一位的数据,将读取到数据作为更新后的当前位数据,并返回步骤S6; 510、读取所述第四寄存器中的数据,使用读取到的数据更新所述第六随机存储器中的数据;读取所述第三寄存器中的数据,使用读取到的数据更新所述第七随机存储器中的数据;读取所述第一寄存器中的数据,使用读取到的数据更新所述第八随机存储器中的数据; 511、调用所述蒙哥马利模乘器,对所述第六随机存储器、所述第七随机存储器和所述第八随机存储器中的数据进行模乘运算,使用运算结果更新所述第四寄存器中的数据; 512、判断所述当前位数据是否为所述第六寄存器中位于最高位的数据,如果是,则执行步骤S13 ;否则,返回步骤S7 ; 513、将所述第四寄存器中的数据输出。
2.如权利要求1所述的方法,其特征在于,所述对所述第五寄存器中的数据进行更新,具体为: 将所述第五寄存器中的数据加预设步长,将得到的结果作为更新后的所述第五寄存器中的数据。
3.如权利要求2所述的方法,其特征在于,所述预设值为1,所述预设步长为I; 所述判断所述当前位数据是否为所述第六寄存器中位于最高位的数据,具体为: 判断所述第五寄存器中的数据的取值是否等于所述第六寄存器中的数据的长度,如果是,则确定所述当前位数据为所述第六寄存器中位于最高位的数据;否则,确定所述当前位数据不是所述第六寄 存器中位于最高位的数据。
4.一种在嵌入式系统中实现大数预计算的方法,其特征在于,包括以下步骤: S1、读取第一寄存器中的数据,将读取到的数据写入到第一随机存储器;读取第二寄存器中的数据,将读取到的数据写入到第二随机存储器;所述第一寄存器用于存储第一数据,所述第二寄存器用于存储第二数据,所述第二数据的取值为以2为底数,以第三数据的取值为指数的幂,所述第三数据为整数; S2、调用取模模块,对所述第一随机存储器和所述第二随机存储器中的数据进行运算,将运算结果分别写入到第三寄存器和第四寄存器;所述取模模块用于将所述第一随机存储器中的数据作为模数,将所述第二随机存储器中的数据作为被模数,进行取模运算; S3、读取所述第三寄存器中的数据,将读取到的数据分别写入到第三随机存储器和第四随机存储器;读取所述第一寄存器中的数据,将读取到的数据写入到第五随机存储器; S4、调用模加模块,对所述第三随机存储器、所述第四随机存储器和所述第五随机存储器中的数据进行运算,使用运算结果更新所述第三寄存器中的数据;所述模加模块用于将所述第三随机存储器中的数据和所述第四随机存储器中的数据作为加数,将所述第五随机存储器中的数据作为模数,进行模加运算; S5、根据第五寄存器中的数据,从第六寄存器中读取位于最低位的数据,将读取到的数据作为当前位数据,所述第五寄存器中的数据的初始值为预设值,所述第六寄存器用于存储所述第三数据; S6、对所述当前位数据的取值进行判断,如果所述当前位数据的取值为零,则执行步骤S9 ;如果所述当前位数据的取值为1,则执行步骤S7 ; S7、根据所述第三寄存器中的数据更新所述第四寄存器中的数据; S8、判断所述当前位数据是否为所述第六寄存器中位于最高位的数据,如果是,则执行步骤S15 ;否则,执行步骤S9 ; S9、对所述第五寄存器中的数据进行更新,根据更新后的所述第五寄存器中的数据,从所述第六寄存器中读取比所述当前位数据高一位的数据,将读取到数据作为更新后的当前位数据; S10、读取所述第三寄存器中的数据,将读取到的数据分别写入到第六随机存储器和第七随机存储器;读取所述第一寄存器中的数据,将读取到的数据写入到第八随机存储器; S11、调用蒙哥马利模乘器,对所述第六随机存储器、所述第七随机存储器和所述第八随机存储器中的数据进行模乘运算,使用运算结果更新所述第三寄存器中的数据;所述蒙哥马利模乘器用于将所述第六随机存储器中的数据、所述第七随机存储器中的数据和所述第八随机存储器中的数据分别作为第一输入参数、第二输入参数和第三输入参数,进行模S乘运算; `512、对所述当前位数据的取值进行判断,如果所述当前位数据的取值为零,则返回步骤S9 ;如果所述当前位数据的取值为1,则执行步骤S13 ; `513、读取所述第四寄存器中的数据,使用读取到的数据更新所述第六随机存储器中的数据;读取所述第三寄存器中的数据,使用读取到的数据更新所述第七随机存储器中的数据;读取所述第一寄存器中的数据,使用读取到的数据更新所述第八随机存储器中的数据; `514、调用所述蒙哥马利模乘器,对所述第六随机存储器、所述第七随机存储器和所述第八随机存储器中的数据进行模乘运算,使用运算结果更新所述第四寄存器中的数据,并返回步骤S9 ; `515、将所述第四寄存器中的数据输出。
5.如权利要求4所述的方法,其特征在于,所述对所述第五寄存器中的数据进行更新,具体为: 将所述第五寄存器中的数据加预设步长,将得到的结果作为更新后的所述第五寄存器中的数据。
6.如权利要求5所述的方法,其特征在于,所述预设值为1,所述预设步长为I; 所述判断所述当前位数据 是否为所述第六寄存器中位于最高位的数据,具体为: 判断所述第五寄存器中的数 据的取值是否等于所述第六寄存器中的数据的长度,如果是,则确定所述当前位数据为所述第六寄存器中位于最高位的数据;否则,确定所述当前位数据不是所述第六寄存器中位于最高位的数据。
7.—种在嵌入式系统中实现大数预计算的方法,其特征在于,包括以下步骤: `51、读取第一寄存器中的数据,将读取到的数据写入到第一随机存储器;读取第二寄存器中的数据,将读取到的数据写入到第二随机存储器;所述第一寄存器用于存储第一数据,所述第二寄存器用于存储第二数据,所述第二数据的取值为以2为底数,以第三数据的取值为指数的幂,所述第三数据为整数; `52、调用取模模块,对所述第一随机存储器和所述第二随机存储器中的数据进行运算,将运算结果分别写入到第三寄存器和第四寄存器;所述取模模块用于将所述第一随机存储器中的数据作为模数,将所述第二随机存储器中的数据作为被模数,进行取模运算; `53、读取所述第三寄存器中的数据,将读取到的数据分别写入到第三随机存储器和第四随机存储器;读取所述第一寄存器中的数据,将读取到的数据写入到第五随机存储器; `54、调用模加模块,对所述第三随机存储器、所述第四随机存储器和所述第五随机存储器中的数据进行运算,使用运算结果更新所述第三寄存器中的数据;所述模加模块用于将所述第三随机存储器中的数据和所述第四随机存储器中的数据作为加数,将所述第五随机存储器中的数据作为模数,进行模加运算; `55、读取所述第四寄存器中的数据,将读取到的数据分别写入到第六随机存储器和第七随机存储器;读取所述第一寄存器中的数据,将读取到的数据写入到第八随机存储器;调用蒙哥马利模乘器,对所述第六随机存储器、所述第七随机存储器和所述第八随机存储器中的数据进行模乘运算,使用运算结果更新所述第四寄存器中的数据;所述蒙哥马利模乘器用于将所述第六随机存储器中的数据、所述第七随机存储器中的数据和所述第八随机存储器中的数据分别作为第一输入参数、第二输入参数和第三输入参数,进行模乘运算; 根据第五寄存器中的数据,从第六寄存器中读取位于最高位的数据,将读取到的数据作为当前位数据,所述第五寄存器中的数据的初始值为预设值,所述第六寄存器用于存储所述第三数据; S6、对所述当前位数据的取值进行判断,如果所述当前位数据的取值为零,则执行步骤S9 ;如果所述当前位数据的取值为1,则执行步骤S7 ; S7、读取所述第四寄存器中的数据,使用读取到的数据更新所述第六随机存储器中的数据;读取所述第三寄存器中的数据,使用读取到的数据更新所述第七随机存储器中的数据;读取所述第一寄存器中的数据,使用读取到的数据更新所述第八随机存储器中的数据; S8、调用所述蒙哥马利模乘器,对所述第六随机存储器、所述第七随机存储器和所述第八随机存储器中的数 据进行模乘运算,使用运算结果更新所述第四寄存器中的数据,并执行步骤S9 ; S9、判断所述当前位数据是否为所述第六寄存器中位于最低位的数据,如果是,则执行步骤Sll ;否则,执行步骤SlO ; S10、读取所述第四寄存器中的数据,使用读取到的数据分别更新所述第六随机存储器和所述第七随机存储器中的数据;读取所述第一寄存器中的数据,使用读取到的数据更新第八随机存储器中的数据;调用蒙哥马利模乘器,对所述第六随机存储器、所述第七随机存储器和所述第八随机存储器中的数据进行模乘运算,使用运算结果更新所述第四寄存器中的数据;所述蒙哥马利模乘器用于将所述第六随机存储器中的数据、所述第七随机存储器中的数据和所述第八随机存储器中的数据分别作为第一输入参数、第二输入参数和第三输入参数,进行模乘运算; 对所述第五寄存器中的数据进行更新,根据更新后的所述第五寄存器中的数据,从所述第六寄存器中读取比所述当前位数据低一位的数据,将读取到数据作为更新后的当前位数据,并返回步骤S6; S11、将所述第四寄存器中的数据输出。
8.如权利要求7所述的方法,其特征在于,所述对所述第五寄存器中的数据进行更新,具体为: 将所述第五寄存器中的数据减预设步长,将得到的结果作为更新后的所述第五寄存器中的数据。
9.如权利要求8所述的方法,其特征在于,所述预设值为所述第六寄存器中的数据的长度,所述预设步长为I ; 所述判断所述当前位数据是否为所述第六寄存器中位于最低位的数据,具体为: 判断所述第五寄存器中的数据的取值是否等于1,如果是,则确定所述当前位数据为所述第六寄存器中位于最低位的数据;否则,确定所述当前位数据不是所述第六寄存器中位于最低位的数据。
10.一种在嵌入式系统中实现大数预计算的方法,其特征在于,包括以下步骤: S1、读取第一寄存器中的数据,将读取到的数据写入到第一随机存储器;读取第二寄存器中的数据,将读取到的数据写入到第二随机存储器中;所述第一寄存器用于存储第一数据,所述第二寄存器用于存储第二数据,所述第二数据的取值为以2为底数,以第三数据的取值为指数的幂,所述第三数据为整数; S2、调用取模模块,对所述第一随机存储器和所述第二随机存储器中的数据进行运算,将运算结果分别写入到第三寄存器和第四寄存器;所述取模模块用于将所述第一随机存储器中的数据作为模数,将所述第二随机存储器中的数据作为被模数,进行取模运算; S3、读取所述第三寄存器中的数据,将读取到的数据分别写入到第三随机存储器和第四随机存储器;读取所述第一寄存器中的数据,将读取到的数据写入到第五随机存储器; S4、调用模加模块,对所述第三随机存储器、所述第四随机存储器和所述第五随机存储器中的数据进行运算,使用运算结果更新所述第三寄存器中的数据;所述模加模块用于将所述第三随机存储器中的数据和所述第四随机存储器中的数据作为加数,将所述第五随机存储器中的数据作为模数,进行模加运算; SS、读取所述第三寄存器中的数据,将读取到的数据分别写入到第六随机存储器和第七随机存储器;读取所述第一寄存器中的数据,将读取到的数据写入到第八随机存储器; S6、调用蒙哥马利模乘器,对所述第六随机存储器、所述第七随机存储器和所述第八随机存储器中的数据进行模乘运算,使用运算结果更新所述第三寄存器中的数据;所述蒙哥马利模乘器用于将所述第六随机存储器中的数据、所述第七随机存储器中的数据和所述第八随机存储器中的数据分别作为第一输入参数、第二输入参数和第三输入参数,进行模乘运算; S7、将第五寄存器中的数据加1,将得到的结果作为更新后的所述第五寄存器中的数据,判断所述第五寄存器中的数据是否等于所述第六寄存器中的数据的长度,如果是,则执行步骤S8 ;否则,返回步骤SS ;所述第五寄存器中的数据的初始值为零,所述第六寄存器用于存储所述第 三数据,所述第三数据的取值为2的整数次幂; S8、将所述第三寄存器中的数据输出。
11.一种在嵌入式系统中实现大数预计算的方法,其特征在于,包括以下步骤: S1、读取第一寄存器中的数据,将读取到的数据写入到第一随机存储器;读取第二寄存器中的数据,将读取到的数据写入到第二随机存储器;所述第一寄存器用于存储第一数据,所述第二寄存器用于存储第二数据,所述第二数据的取值为以2为底数,以第三数据的取值为指数的幂,所述第三数据为整数; S2、调用取模模块,对所述第一随机存储器和所述第二随机存储器中的数据进行运算,将运算结果分别写入到第三寄存器和第四寄存器;所述取模模块用于将所述第一随机存储器中的数据作为模数,将所述第二随机存储器中的数据作为被模数,进行取模运算; S3、读取所述第三寄存器中的数据,将读取到的数据分别写入到第三随机存储器和第四随机存储器;读取所述第一寄存器中的数据,将读取到的数据写入到第五随机存储器; S4、调用模加模块,对所述第三随机存储器、所述第四随机存储器和所述第五随机存储器中的数据进行运算,使用运算结果更新所述第三寄存器中的数据;所述模加模块用于将所述第三随机存储器中的数据和所述第四随机存储器中的数据作为加数,将所述第五随机存储器中的数据作为模数,进行模加运算; SS、读取所述第三寄存器中的数据,将读取到的数据分别写入到第六随机存储器和第七随机存储器;读取所述第一寄存器中的数据,将读取到的数据写入到第八随机存储器;S6、调用蒙哥马利模乘器,对所述第六随机存储器、所述第七随机存储器和所述第八随机存储器中的数据进行模乘运算,使用运算结果更新所述第三寄存器中的数据;所述蒙哥马利模乘器用于将所述第六随机存储器中的数据、所述第七随机存储器中的数据和所述第八随机存储器中的数据分别作为第一输入参数、第二输入参数和第三输入参数,进行模乘运算; S7、判断第五寄存器中的数据是否等于所述第六寄存器中的数据的长度,如果是,则执行步骤S9 ;否则,执行步骤S8 ;所述第五寄存器中的数据的初始值为1,所述第六寄存器用于存储所述第三数据,所述第三数据的取值为2的整数次幂; S8、将所述第五寄存器中的数据加1,将得到的结果作为更新后的所述第五寄存器中的数据,并返回步骤S5; S9、将所述第三寄存器中的数据输出。
全文摘要
本发明公开一种在嵌入式系统中实现大数预计算的方法,根据模长的数据格式以及模长对应的二进制数的各个数据位的取值,调用取模模块、模加模块和蒙哥马利模乘器进行迭代运算,能够在模长为任意值时,得到大数预计算结果,从而提高了数据处理速度。
文档编号G06F7/50GK103207770SQ20131013208
公开日2013年7月17日 申请日期2013年4月16日 优先权日2013年4月16日
发明者陆舟, 于华章 申请人:飞天诚信科技股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1