CN102999313B - 一种基于蒙哥马利模乘的数据处理方法 - Google Patents
一种基于蒙哥马利模乘的数据处理方法 Download PDFInfo
- Publication number
- CN102999313B CN102999313B CN201210566979.XA CN201210566979A CN102999313B CN 102999313 B CN102999313 B CN 102999313B CN 201210566979 A CN201210566979 A CN 201210566979A CN 102999313 B CN102999313 B CN 102999313B
- Authority
- CN
- China
- Prior art keywords
- random access
- access memory
- content
- register
- cpu
- 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.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/60—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
- G06F7/72—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
- G06F7/728—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic using Montgomery reduction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
Abstract
本发明公开了一种基于蒙哥马利模乘的数据处理方法,属于计算机技术领域。本发明的方法包括:CPU初始化第五随机存储器,对第二随机存储器中内容按字为单位执行以下操作:1)调用乘加模块将第二随机存储器中内容的一个字与第一随机存储器的内容相乘后与第五随机存储器的内容相加,2)从1)的运算结果中提取一个字和常数寄存器的内容相乘,并将相乘结果的低位字写入第四寄存器,3)调用乘加模块将第四寄存器的内容与第三随机存储器的内容相乘后与第五随机存储器的内容相加;最后根据第三存储器中内容长度输出第五随机存储器的内容。<!--1-->
Description
技术领域
本发明属于计算机技术领域,尤其涉及一种基于蒙哥马利模乘的数据处理方法。
背景技术
在目前的大整数模乘算法的硬件实现中,蒙哥马利(Montgomery)模乘算法被认为是最高效的,也是最适合用硬件实现的一种算法。
目前,实现大整数模乘的模乘器的设计中大多采用Montgomery算法及其变形,现有的模乘器的设计是对中间结果进行储存,下一循环需要用到时再读取,需要对存储设备进行频繁的读写,而对存储设备的读写是需要花费时钟周期的,从而影响了模乘器的工作效率,降低基于蒙哥马利模乘的数据处理速率,比如现有的Montgomery算法存在的在硬件上实现起来运算速度慢的缺陷,会导致RSA、ECC等加密算法的效率低,速度低。
发明内容
为解决现有技术中存在的问题,本发明提出了一种高效的基于蒙哥马利模乘的数据处理方法。
本发明采取的技术方案是:一种基于蒙哥马利模乘的数据处理方法,第一随机存储器用于存储乘数,第二随机存储器用于存储被乘数,第三随机存储器用于存储模数,所述方法包括以下步骤:
步骤1:CPU初始化第五随机存储器,初始化第一偏移量、第二偏移量;其中,所述第一偏移量用于表示所述第二随机存储器中相对于基地址的偏移地址,所述第二偏移量用于表示所述第五随机存储器中相对于基地址的偏移地址。
步骤2:CPU根据第一偏移量从所述第二随机存储器中读取一个字写入第一运算寄存器;
步骤3:CPU调用乘加模块执行第一运算寄存器的内容与所述第一随机存储器的内容相乘后与所述第五随机存储器的内容相加的运算,根据第二偏移量将得到的运算结果从低位到高位写入所述第五随机存储器;
步骤4:CPU根据第二偏移量从所述第五随机存储器中读取一个字写入第二运算寄存器,将所述第二运算寄存器的内容和常数寄存器的内容相乘,并将相乘结果的低位字写入第四寄存器;
步骤5:CPU读取所述第四寄存器、所述第三随机存储器和所述第五随机存储器的内容,调用乘加模块执行所述第四寄存器的内容与所述第三随机存储器的内容相乘后与所述第五随机存储器的内容相加的运算,将第二偏移量加1,根据第二偏移量将得到的运算结果从低位到高位写入所述第五随机存储器;
步骤6:CPU判断第一偏移量是否等于预设步长,是则执行步骤8,否则执行步骤7;
步骤7:第一偏移量加1,返回执行步骤2;
步骤8:CPU读取所述第五随机存储器和所述第三随机存储器的内容,判断所述第五随机存储器的内容的值是否大于等于第三随机存储器的内容的值,是则执行步骤9,否则执行步骤10;
步骤9:CPU用读取到的所述第五随机存储器的内容与第三随机存储器的内容相减,并根据第二偏移量将相减结果从低位到高位写入所述第五随机存储器,执行步骤10;
步骤10:CPU输出所述第五随机存储器的内容。
所述步骤2具体为读取从第二随机存储器的基地址起向左移动第一偏移量后对应的字写入第一运算寄存器。
所述乘加模块用于实现CPU支持的乘法和加法运算。
步骤3所述CPU调用乘加模块执行第一运算寄存器的内容与所述第一随机存储器的内容相乘后与所述第五随机存储器的内容相加的运算具体包括以下步骤:
步骤201:CPU判断第一偏移量是否为0,是则执行步骤210,否则执行步骤202;
步骤202:初始化进位寄存器,初始化索引变量;
步骤203:CPU根据索引变量从第一随机存储器和第五随机存储器中各获取一个字分别写入第三运算寄存器和第四运算寄存器;
步骤204:CPU将第一运算寄存器的内容和第三运算寄存器的内容相乘,相乘结果与第四运算寄存器的内容相加得到第一计算结果;
步骤205:CPU将第一计算结果与进位寄存器的内容相加得到第二计算结果;
步骤206:CPU将第二计算结果的高位起第一个字写入进位寄存器,其余字根据索引变量写入第五随机存储器;
步骤207:CPU判断索引变量是否等于预设字长,是则执行步骤209,否则执行步骤208;
步骤208:索引变量加1,然后返回执行步骤203;
步骤209:CPU读取进位寄存器的内容,并根据索引变量将进位寄存器的内容写入第五随机存储器;
步骤210:CPU输出第五随机存储器的内容作为步骤3所述运算结果。
所述步骤203具体为:从第一随机存储器和第五随机存储器中获取与当前索引变量对应的存储位置上的字分别写入第三运算寄存器和第四运算寄存器。
步骤206所述其余字根据索引变量写入第五随机寄存器具体为:CPU将第二计算结果中除高位起第一个字之外的其余字按照从低位到高位的顺序从第五随机存储器中与当前索引变量对应的存储位置开始依次写入。
步骤3和步骤5所述根据第二偏移量将得到的运算结果从低位到高位写入第五随机存储器具体为:将运算结果按照从低位到高位的顺序从第五随机存储器中基地址起向左移第二偏移量的位置开始依次写入。
步骤4所述CPU根据第二偏移量从第五随机存储器中读取一个字写入第二运算寄存器具体为:读取从第五随机存储器的基地址起向左移动第二偏移量后对应的字写入第二运算寄存器。
步骤5所述调用乘加模块执行所述第四寄存器的内容与所述第三随机存储器的内容相乘后与所述第五随机存储器的内容相加的运算,具体包括以下步骤:
步骤301:CPU判断第一偏移量是否为0,是则执行步骤310,否则执行步骤302;
步骤302:初始化进位寄存器,初始化索引变量;
步骤303:CPU根据索引变量从第三随机存储器和第五随机存储器中各获取一个字分别写入第三运算寄存器和第四运算寄存器;
步骤304:CPU将第三运算寄存器的内容与第四寄存器的内容相乘,相乘结果与第四运算寄存器的内容相加得到第三计算结果;
步骤305:CPU将第三计算结果与进位寄存器的内容相加得到第四计算结果;
步骤306:CPU将第四计算结果的高位起第一个字写入进位寄存器,其余字根据索引变量写入第五随机存储器;
步骤307:CPU判断索引变量是否等于预设字长,是则执行步骤309,否则执行步骤308;
步骤308:索引变量加1,然后返回执行步骤303;
步骤309:CPU读取进位寄存器的内容,并根据索引变量将进位寄存器的内容写入第五随机存储器;
步骤310:CPU输出第五随机存储器的内容作为步骤5所述运算结果。
步骤9所述根据第二偏移量将相减结果从低位到高位写入第五随机存储器具体为:将相减结果按照从低位到高位的顺序从第五随机存储器中基地址起向左移第二偏移量的位置开始依次写入。
本发明提供的一种高效的基于蒙哥马利模乘的数据处理方法,能够达到降低系统运行的周期和通过提高模乘效率提高数据处理速率的效果,尤其使其应用于数据加密算法中时,能够提高数据加解密的效率和速度。
附图说明
图1是本发明提出的一种基于蒙哥马利模乘的数据处理方法流程图;
图2是图1中步骤103所述调用乘加模块进行运算过程示意图;
图3是图1中步骤106所述调用乘加模块进行运算的过程示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
本实施例提供了一种基于蒙哥马利模乘的数据处理方法,以计算机的CPU处理器对数据进行的模乘运算处理过程为例进行介绍,本实施例中,第一随机存储器用于存储模乘运算中的乘数,第二随机存储器用于存储模乘运算中的被乘数,第三随机存储器用于存储模乘运算中的模数,第四寄存器用于存储中间操作数,第五随机存储器用于存储模乘运算的运算结果和模乘运算过程中的乘加模块的运算结果,常数寄存器用于存储预设常数。
本实施例中,模乘运算的乘数、被乘数和模数的长度用机器字长n表示,n≥0,优选一个字的位长为32位,优选n=16即512位。根据参与运算的大数选取的第一随机存储器、第二随机存储器和第三随机存储器的存储空间大于等于n,优选取为n以减少占用空间,第五随机存储器的存储空间大于等于2n+1,优选取为2n+1以减少占用空间;第四寄存器、常数寄存器的存储空间大于等于1个字,优选取为1个字以减少占用空间。
如图1所示,CPU处理器执行的基于蒙哥马利模乘的数据处理方法,包括以下步骤:
步骤101:初始化第五随机存储器,初始化第一偏移量、第二偏移量;
具体地,将第五随机存储器中的内容初始化为0,将第一偏移量、第二偏移量初始化为0,所述第一偏移量用于表示第二随机存储器中相对于基地址的偏移地址,所述第二偏移量用于表示第五随机存储器中相对于基地址的偏移地址。
步骤102:根据第一偏移量从第二随机存储器中读取一个字写入第一运算寄存器;
所述根据第一偏移量从第二随机存储器中读取一个字写入第一运算寄存器具体为读取从第二随机存储器的基地址起向左移动第一偏移量后对应的字写入第一运算寄存器。
本实施例中,所述第一运算寄存器的存储空间的大小优选为1个字,用于存放计算过程中根据第一偏移量从第二随机存储器中读取的一个字。
本实施例中优选的,第二随机存储器的内容为:
91D46B9BF7BF6BB637EF43699B20C28E
5C312C1883F0AB86CE7D029D67400BCB
CB024F129EFEC843C7BA601097275C41
84FA3D48FF5CA205761382C0CA6F360C
当第一偏移量为0时,从第二随机存储器中读取的一个字为CA6F360C。
步骤103:对第一运算寄存器、第一随机存储器和第五随机存储器的内容调用乘加模块进行运算,根据第二偏移量将得到的运算结果从低位到高位写入第五随机存储器;
本实施例中具体地,乘加模块可以实现CPU支持的乘法运算和加法运算,用于计算第一运算寄存器与第一随机存储器的内容相乘再与第五随机存储器的内容相加并得到一个运算结果,然后根据第二偏移量将运算结果写入第五随机存储器中。
所述根据第二偏移量将运算结果写入第五随机存储器具体为将运算结果按照从低位到高位的顺序从第五随机存储器中基地址开始左移第二偏移量的位置开始依次写入。
本实施例中优选的当第一偏移量为0时,参与运算的第一运算寄存器的内容为:CA6F360C;第五随机存储器的内容为0;
第一随机存储器的内容为:
FA371FB2CA0972D1A51D20FCD9B12C38
830024AE5F66E7C7B13C5C1417D0A993
5EF27616D1D36B0E9E3015E237CB5C8F
3F7979D9CC2085D2D0E2B6BDE4D00064;
本步骤写入第五随机存储器的内容为:
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
000000000000000000000000C5DC31BD
2D3641B1ABD92E50B3BB127C5780E849
AAA110CE3F267692D1C1873EF15E853E
CDBC267962A6A22B8BFB6695AD40EDEC
49E6D2F6CCFC3470B00EF5A9AD311CB0。
步骤104:根据第二偏移量从第五随机存储器读取一个字写入第二运算寄存器,将第二运算寄存器和常数寄存器的内容相乘,并将相乘结果的低位字写入第四寄存器;
所述根据第二偏移量从第五随机存储器中读取一个字写入第二运算寄存器具体为读取从第五随机存储器的基地址起向左移动第二偏移量后对应的字写入第二运算寄存器。所述第二运算寄存器的存储空间的大小优选为1个字,用于存放计算过程中根据第二偏移量从第五随机存储器中读取的一个字。
本实施例中优选的参与运算的写入第二运算寄存器的内容为:AD311CB0,常数寄存器的内容为:1A788E41;
本步骤写入第四寄存器的内容为:89E1E8B0。
步骤105:读取第四寄存器、第三随机存储器和第五随机存储器的内容;
本实施例中优选的读取到的第三随机存储器的内容为:
A9E55F8AA3D41743634D40B3646FA84E
7628CEAB9B5974204F226B6F80E6AECF
76CE3C520632A7EF8053CEC7A30E4F9D
BFE8E6A4E4A32F0081564573B4117E3F。
步骤106:对第四寄存器、第三随机存储器和第五随机存储器的内容调用乘加模块进行运算,将第二偏移量加1,根据第二偏移量将得到的运算结果从低位到高位写入第五随机存储器;
本实施例中具体地,乘加模块可以实现CPU支持的乘法运算和加法运算,用于将第四寄存器的内容与第三随机存储器的内容相乘再与第五随机存储器的内容相加并得到一个运算结果,然后第二偏移量加1后根据第二偏移量将运算结果写入第五随机存储器中。
所述根据第二偏移量将得到的运算结果从低位到高位写入第五随机存储器具体为:将运算结果按照从低位到高位的顺序从第五随机存储器中基地址开始左移当前第二偏移量的位置开始依次写入。
优选的本步骤写入第五随机存储器的内容为:
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
000000000000000000000001215DDEE4
04041356051CDD28D9E5280B7EFD69C7
5CF1145678A28D3F83C42F05494E8116
4B9882E052D7C6714CB773CA2497EF6C
40531B1B746DD1FDC05E305500000000
步骤107:判断第一偏移量是否等于预设步长,是则执行步骤109,否则执行步骤108;
本实施例中具体地,预设步长为15。
步骤108:第一偏移量加1,返回执行步骤102;
步骤109:读取第五随机存储器的内容,读取第三随机存储器的内容;
步骤110:判断读取的第五随机存储器的内容的值是否大于等于第三随机存储器的内容的值,是则执行步骤111,否则执行步骤112;
步骤111:用读取到的第五随机存储器的内容与第三随机存储器的内容相减,并根据第二偏移量将相减结果从低位到高位写入第五随机存储器,执行步骤112;
本实施例中,所述根据第二偏移量将相减结果从低位到高位写入第五随机存储器具体为将相减结果按照从低位到高位的顺序从第五随机存储器中基地址开始左移第二偏移量的位置开始依次写入。
步骤112:输出第五随机存储器的内容。
本实施例中本步骤输出的第五随机存储器的内容即为模乘运算的结果。优选的,输出的第五随机存储器的内容为:
65F36D6CAD704FF406219952FA62DCC6
0F9892D1BBC23E741EFECDE34717BDA3
55545D9E18A97A6559EB8832F31DD5BC
397DA4B5773E8EB38F89123B0A05453E。
本实施例中提到的乘加模块用于实现CPU支持的大数的乘法运算和加法运算,下面以图1中步骤103和步骤106采用乘加模块实现的大数的乘法和加法运算为例进行详细描述。其中,进位寄存器用于存放乘法和加法运算中的进位,进位寄存器的存储空间的大小大于等于1个字,优选取1个字以减少占用空间。
图1中步骤103中所述对第一运算寄存器、第一随机存储器和第五随机存储器的内容调用乘加模块进行运算的具体过程如图2所示,包括如下步骤:
步骤201:CPU判断第一偏移量是否为0,是则执行步骤210,否则执行步骤202;
本实施例中具体地,所述第一偏移量用于表示第二随机存储器中相对于基地址的偏移地址。
步骤202:CPU初始化进位寄存器,初始化索引变量;
本实施例中具体地,初始化进位寄存器优选为将进位寄存器的内容初始化为0,初始化索引变量优选为将索引变量初始化为1。
步骤203:CPU根据索引变量从第一随机存储器和第五随机存储器中各获取一个字分别写入第三运算寄存器和第四运算寄存器;
本实施例,根据索引变量从第一随机存储器和第五随机存储器中各获取一个字分别写入第三运算寄存器和第四运算寄存器具体为:从第一随机存储器和第五随机存储器中获取与当前索引变量对应的存储位置上的字分别写入第三运算寄存器和第四运算寄存器。例如,当前索引变量为1,则将第一随机存储器的低位起第一个字写入第三运算寄存器,将第五随机存储器低位起第一个字写入第四运算寄存器。
本实施例中优选的,所述第三运算寄存器用于存储乘加运算中的乘数,所述第四运算寄存器用于存储乘加运算中的被加数,所述第三运算寄存器和第四运算寄存器的存储空间的大小优选为1个字。
步骤204:CPU将第一运算寄存器的内容和第三运算寄存器的内容相乘,相乘结果与第四运算寄存器的内容相加得到第一计算结果;
本实施例中具体地,所述第一计算结果可以存放在一个临时寄存器中,该临时寄存器的存储空间的大小优选为2个字,在执行步骤205之前包括从该临时寄存器中读取第一计算结果。
步骤205:CPU将第一计算结果与进位寄存器的内容相加得到第二计算结果;
步骤206:CPU将第二计算结果的高位起第一个字写入进位寄存器,其余字根据索引变量写入第五随机存储器;
本实施例中具体地,其余字根据索引变量写入第五随机寄存器具体为:CPU将第二计算结果中除高位起一个字之外的其余字按照从低位到高位的顺序从第五随机存储器中与当前索引变量对应的存储位置开始依次写入。例如,当前索引变量为1,则将第二运算结果中除最高位的一个字之前的其余字从第五随机存储器中低位起第一个字开始依次写入。
步骤207:CPU判断索引变量是否等于预设字长,是则执行步骤209,否则执行步骤208;
本实施例中具体地,CPU判断索引变量是否等于n,是执行步骤209,否则执行步骤208;
步骤208:索引变量加1,然后返回执行步骤203;
步骤209:CPU读取进位寄存器的内容,并根据索引变量将进位寄存器的内容写入第五随机存储器;
本实施例中具体地,CPU将读取到的进位寄存器的内容写入到第五随机存储器中第n+1个字对应的存储位置。
步骤210:CPU输出第五随机存储器的内容。
具体地,本步骤输出的第五随机存储器的内容即为乘加运算的运算结果。
图1中步骤106中所述调用乘加模块对读取到的数进行运算的具体过程如图3所示,包括如下步骤:
步骤301:CPU判断第一偏移量是否为0,是则执行步骤310,否则执行步骤302;
本实施例中具体地,所述第一偏移量用于表示第二随机存储器中相对于基地址的偏移地址。
步骤302:CPU初始化进位寄存器,初始化索引变量;
本实施例中具体地,初始化进位寄存器优选为将进位寄存器的内容初始化为0,初始化索引变量优选为将索引变量初始化为1。
步骤303:CPU根据索引变量从第三随机存储器和第五随机存储器中各获取一个字分别写入第三运算寄存器和第四运算寄存器;
本实施例,根据索引变量从第三随机存储器和第五随机存储器中各获取一个字分别写入第三运算寄存器和第四运算寄存器具体为:从第三随机存储器和第五随机存储器中获取与当前索引变量对应的存储位置上的字分别写入第三运算寄存器和第四运算寄存器。例如,当前索引变量为n,则将获取到的第三随机存储器的最低位起第n个字写入第三运算寄存器,将获取到的第五随机存储器最低位起第n个字写入第四运算寄存器。
本实施例中优选的,所述第三运算寄存器用于存储乘加运算中的乘数,所述第四运算寄存器用于存储乘加运算中的被加数,所述第三运算寄存器和第四运算寄存器的存储空间的大小优选为1个字。
步骤304:CPU将第三运算寄存器的内容与第四寄存器的内容相乘,相乘结果与第四运算寄存器的内容相加得到第三计算结果;
本实施例中具体地,所述第三计算结果可以存放在一个临时寄存器中,该临时寄存器的存储空间优选为2个机器字长,在执行步骤305之前包括从该临时寄存器中读取第三计算结果。
步骤305:CPU将第三计算结果与进位寄存器的内容相加得到第四计算结果;
步骤306:CPU将第四计算结果的高位起第一个字写入进位寄存器,其余字根据索引变量写入第五随机存储器;
本实施例中具体地,其余字根据索引变量写入第五随机寄存器具体为:CPU将第四计算结果中除高位起第一个字之外的其余字按照从低位到高位的顺序从第五随机存储器中与当前索引变量对应的存储位置开始依次写入。例如,当前索引变量为n,则将第四计算结果中除高位起第一个字之外的其余字从第五随机存储器中低位起第n个字开始依次写入。
步骤307:CPU判断索引变量是否等于预设字长,是则执行步骤309,否则执行步骤308;
本实施例中具体地,CPU判断索引变量是否等于n,是执行步骤309,否则执行步骤308;优选的n=16。
步骤308:索引变量加1,然后返回执行步骤303;
步骤309:CPU读取进位寄存器的内容,并根据索引变量将进位寄存器的内容写入第五随机存储器;
本实施例中具体地,CPU将读取到的进位寄存器的内容写入到第五随机存储器中第n+1个字对应的存储位置。
步骤310:CPU输出第五随机存储器的内容。
具体地,本步骤输出的第五随机存储器的内容即为乘加运算的运算结果。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
Claims (11)
1.一种基于蒙哥马利模乘的数据处理方法,其特征在于:第一随机存储器用于存储乘数,第二随机存储器用于存储被乘数,第三随机存储器用于存储模数,所述第一随机存储器、所述第二随机存储器和所述第三随机存储器的存储空间均大于等于n,其中,n≥0字长,所述方法包括:
步骤1:CPU初始化第五随机存储器,初始化第一偏移量、第二偏移量;所述第五随机存储器的存储空间大于等于2n+1;
步骤2:CPU根据第一偏移量从所述第二随机存储器中读取一个字写入第一运算寄存器;
步骤3:CPU调用乘加模块执行第一运算寄存器的内容与所述第一随机存储器的内容相乘后与所述第五随机存储器的内容相加的运算,根据第二偏移量将得到的运算结果从低位到高位写入所述第五随机存储器;
步骤4:CPU根据第二偏移量从所述第五随机存储器中读取一个字写入第二运算寄存器,将所述第二运算寄存器的内容和常数寄存器的内容相乘,并将相乘结果的低位字写入第四寄存器;
步骤5:CPU读取所述第四寄存器、所述第三随机存储器和所述第五随机存储器的内容,调用乘加模块执行所述第四寄存器的内容与所述第三随机存储器的内容相乘后与所述第五随机存储器的内容相加的运算,将第二偏移量加1,根据第二偏移量将得到的运算结果从低位到高位写入所述第五随机存储器;
步骤6:CPU判断第一偏移量是否等于预设步长,是则执行步骤8,否则执行步骤7;
步骤7:第一偏移量加1,返回执行步骤2;
步骤8:CPU读取所述第五随机存储器和所述第三随机存储器的内容,判断所述第五随机存储器的内容的值是否大于等于第三随机存储器的内容的值,是则执行步骤9,否则执行步骤10;
步骤9:CPU用读取到的所述第五随机存储器的内容与第三随机存储器的内容相减,并根据第二偏移量将相减结果从低位到高位写入所述第五随机存储器,执行步骤10;
步骤10:CPU输出所述第五随机存储器的内容。
2.根据权利要求1所述方法,其特征在于:所述第一偏移量用于表示所述第二随机存储器中相对于基地址的偏移地址,所述第二偏移量用于表示所述第五随机存储器中相对于基地址的偏移地址。
3.根据权利要求1所述方法,其特征在于:所述步骤2具体为读取从第二随机存储器的基地址起向左移动第一偏移量后对应的字写入第一运算寄存器。
4.根据权利要求1所述方法,其特征在于:所述乘加模块用于实现CPU支持的乘法和加法运算。
5.根据权利要求1所述方法,其特征在于:步骤3所述CPU调用乘加模块执行第一运算寄存器的内容与所述第一随机存储器的内容相乘后与所述第五随机存储器的内容相加的运算包括:
步骤201:CPU判断第一偏移量是否为0,是则执行步骤210,否则执行步骤202;
步骤202:初始化进位寄存器,初始化索引变量;
步骤203:CPU根据索引变量从第一随机存储器和第五随机存储器中各获取一个字分别写入第三运算寄存器和第四运算寄存器;
步骤204:CPU将第一运算寄存器的内容和第三运算寄存器的内容相乘,相乘结果与第四运算寄存器的内容相加得到第一计算结果;
步骤205:CPU将第一计算结果与进位寄存器的内容相加得到第二计算结果;
步骤206:CPU将第二计算结果的高位起第一个字写入进位寄存器,其余字根据索引变量写入第五随机存储器;
步骤207:CPU判断索引变量是否等于预设字长,是则执行步骤209,否则执行步骤208;
步骤208:索引变量加1,然后返回执行步骤203;
步骤209:CPU读取进位寄存器的内容,并根据索引变量将进位寄存器的内容写入第五随机存储器;
步骤210:CPU输出第五随机存储器的内容作为步骤3所述运算结果。
6.根据权利要求5所述方法,其特征在于:所述步骤203具体为:从第一随机存储器和第五随机存储器中获取与当前索引变量对应的存储位置上的字分别写入第三运算寄存器和第四运算寄存器。
7.根据权利要求5所述方法,其特征在于:步骤206所述其余字根据索引变量写入第五随机寄存器具体为:CPU将第二计算结果中除高位起第一个字之外的其余字按照从低位到高位的顺序从第五随机存储器中与当前索引变量对应的存储位置开始依次写入。
8.根据权利要求1所述方法,其特征在于:步骤3和步骤5所述根据第二偏移量将得到的运算结果从低位到高位写入第五随机存储器具体为:将运算结果按照从低位到高位的顺序从第五随机存储器中基地址起向左移第二偏移量的位置开始依次写入。
9.根据权利要求1所述方法,其特征在于:步骤4所述CPU根据第二偏移量从第五随机存储器中读取一个字写入第二运算寄存器具体为:读取从第五随机存储器的基地址起向左移动第二偏移量后对应的字写入第二运算寄存器。
10.根据权利要求1所述方法,其特征在于:步骤5所述调用乘加模块执行所述第四寄存器的内容与所述第三随机存储器的内容相乘后与所述第五随机存储器的内容相加的运算,包括:
步骤301:CPU判断第一偏移量是否为0,是则执行步骤310,否则执行步骤302;
步骤302:初始化进位寄存器,初始化索引变量;
步骤303:CPU根据索引变量从第三随机存储器和第五随机存储器中各获取一个字分别写入第三运算寄存器和第四运算寄存器;
步骤304:CPU将第三运算寄存器的内容与第四寄存器的内容相乘,相乘结果与第四运算寄存器的内容相加得到第三计算结果;
步骤305:CPU将第三计算结果与进位寄存器的内容相加得到第四计算结果;
步骤306:CPU将第四计算结果的高位起第一个字写入进位寄存器,其余字根据索引变量写入第五随机存储器;
步骤307:CPU判断索引变量是否等于预设字长,是则执行步骤309,否则执行步骤308;
步骤308:索引变量加1,然后返回执行步骤303;
步骤309:CPU读取进位寄存器的内容,并根据索引变量将进位寄存器的内容写入第五随机存储器;
步骤310:CPU输出第五随机存储器的内容作为步骤5所述运算结果。
11.根据权利要求10所述方法,其特征在于:步骤9所述根据第二偏移量将相减结果从低位到高位写入第五随机存储器具体为:将相减结果按照从低位到高位的顺序从第五随机存储器中基地址起向左移第二偏移量的位置开始依次写入。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210566979.XA CN102999313B (zh) | 2012-12-24 | 2012-12-24 | 一种基于蒙哥马利模乘的数据处理方法 |
PCT/CN2013/088305 WO2014101632A1 (zh) | 2012-12-24 | 2013-12-02 | 一种基于蒙哥马利模乘的数据处理方法 |
US14/434,275 US9588696B2 (en) | 2012-12-24 | 2013-12-02 | Montgomery modular multiplication-based data processing method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210566979.XA CN102999313B (zh) | 2012-12-24 | 2012-12-24 | 一种基于蒙哥马利模乘的数据处理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102999313A CN102999313A (zh) | 2013-03-27 |
CN102999313B true CN102999313B (zh) | 2016-01-20 |
Family
ID=47927926
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210566979.XA Active CN102999313B (zh) | 2012-12-24 | 2012-12-24 | 一种基于蒙哥马利模乘的数据处理方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US9588696B2 (zh) |
CN (1) | CN102999313B (zh) |
WO (1) | WO2014101632A1 (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102999313B (zh) * | 2012-12-24 | 2016-01-20 | 飞天诚信科技股份有限公司 | 一种基于蒙哥马利模乘的数据处理方法 |
CN103207770B (zh) * | 2013-04-16 | 2016-09-28 | 飞天诚信科技股份有限公司 | 一种在嵌入式系统中实现大数预计算的方法 |
CN104793919B (zh) * | 2015-04-15 | 2017-11-07 | 深圳国微技术有限公司 | 一种蒙哥马利模乘装置及具有其的嵌入式安全芯片 |
CN106681690B (zh) * | 2015-11-07 | 2019-02-26 | 上海复旦微电子集团股份有限公司 | 基于蒙哥马利模乘的数据处理方法、模乘运算方法及装置 |
CN106681691B (zh) * | 2015-11-07 | 2019-01-29 | 上海复旦微电子集团股份有限公司 | 基于蒙哥马利模乘的数据处理方法、模乘运算方法和装置 |
IL244842A0 (en) * | 2016-03-30 | 2016-07-31 | Winbond Electronics Corp | Efficient non-modular multiplexing is protected against side-channel attacks |
CN106873941B (zh) * | 2017-01-19 | 2019-05-21 | 西安交通大学 | 一种快速模乘和模平方电路及其实现方法 |
US10778407B2 (en) | 2018-03-25 | 2020-09-15 | Nuvoton Technology Corporation | Multiplier protected against power analysis attacks |
US11508263B2 (en) * | 2020-06-24 | 2022-11-22 | Western Digital Technologies, Inc. | Low complexity conversion to Montgomery domain |
CN112486457B (zh) * | 2020-11-23 | 2022-12-20 | 杭州电子科技大学 | 一种实现改进的fios模乘算法的硬件系统 |
CN112286496B (zh) * | 2020-12-25 | 2021-03-30 | 九州华兴集成电路设计(北京)有限公司 | 蒙哥马利算法的模乘器和电子设备 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1366234A (zh) * | 2000-12-19 | 2002-08-28 | 国际商业机器公司 | 运算电路和运算方法 |
CN1492316A (zh) * | 2003-09-09 | 2004-04-28 | 大唐微电子技术有限公司 | 一种蒙格玛丽模乘算法及其模乘、模幂运算电路 |
CN1696894A (zh) * | 2004-05-10 | 2005-11-16 | 华为技术有限公司 | 大数模乘计算乘法器 |
CN1731345A (zh) * | 2005-08-18 | 2006-02-08 | 上海微科集成电路有限公司 | 可扩展高基蒙哥马利模乘算法及其电路结构 |
CN102231102A (zh) * | 2011-06-16 | 2011-11-02 | 天津大学 | 基于余数系统的rsa密码处理方法及协处理器 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7693926B2 (en) * | 2006-03-30 | 2010-04-06 | Intel Corporation | Modular multiplication acceleration circuit and method for data encryption/decryption |
CN100527073C (zh) * | 2006-11-09 | 2009-08-12 | 北京华大信安科技有限公司 | 高效模乘方法及装置 |
FR2917198B1 (fr) * | 2007-06-07 | 2010-01-29 | Thales Sa | Operateur de reduction modulaire ameliore. |
CN102999313B (zh) * | 2012-12-24 | 2016-01-20 | 飞天诚信科技股份有限公司 | 一种基于蒙哥马利模乘的数据处理方法 |
-
2012
- 2012-12-24 CN CN201210566979.XA patent/CN102999313B/zh active Active
-
2013
- 2013-12-02 WO PCT/CN2013/088305 patent/WO2014101632A1/zh active Application Filing
- 2013-12-02 US US14/434,275 patent/US9588696B2/en active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1366234A (zh) * | 2000-12-19 | 2002-08-28 | 国际商业机器公司 | 运算电路和运算方法 |
CN1492316A (zh) * | 2003-09-09 | 2004-04-28 | 大唐微电子技术有限公司 | 一种蒙格玛丽模乘算法及其模乘、模幂运算电路 |
CN1696894A (zh) * | 2004-05-10 | 2005-11-16 | 华为技术有限公司 | 大数模乘计算乘法器 |
CN1731345A (zh) * | 2005-08-18 | 2006-02-08 | 上海微科集成电路有限公司 | 可扩展高基蒙哥马利模乘算法及其电路结构 |
CN102231102A (zh) * | 2011-06-16 | 2011-11-02 | 天津大学 | 基于余数系统的rsa密码处理方法及协处理器 |
Also Published As
Publication number | Publication date |
---|---|
US20150293698A1 (en) | 2015-10-15 |
WO2014101632A1 (zh) | 2014-07-03 |
US9588696B2 (en) | 2017-03-07 |
CN102999313A (zh) | 2013-03-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102999313B (zh) | 一种基于蒙哥马利模乘的数据处理方法 | |
CN106445471B (zh) | 处理器和用于在处理器上执行矩阵乘运算的方法 | |
CN103226461B (zh) | 一种用于电路的蒙哥马利模乘方法及其电路 | |
CN101290613B (zh) | Fft处理器的数据存储系统和方法 | |
CN102279725A (zh) | Ecc协处理器 | |
CN101547089B (zh) | 集成电路中素数域椭圆曲线密码算法的实现方法 | |
RU2012150102A (ru) | Применение косвенных адресных слов данных расширенной схемы асинхронного перемещения данных | |
KR20080026673A (ko) | 곱셈 누적 연산을 위한 디지털 신호처리 장치 및 방법 | |
CN106415526B (zh) | Fft处理器及运算方法 | |
TW201737115A (zh) | 一種機器學習系統的訓練方法和訓練系統 | |
CN107315566A (zh) | 一种用于执行向量循环移位运算的装置和方法 | |
CN106681690A (zh) | 基于蒙哥马利模乘的数据处理方法、模乘运算方法及装置 | |
CN103927215A (zh) | 基于内存盘与SSD硬盘的kvm虚拟机调度的优化方法及系统 | |
CN103593299B (zh) | 一种节省存储空间的数据处理方法 | |
CN102945148A (zh) | 一种并行指令集的实现方法 | |
CN103207770A (zh) | 一种在嵌入式系统中实现大数预计算的方法 | |
CN103488582B (zh) | 写高速缓冲存储器的方法及装置 | |
CN107544912A (zh) | 一种日志记录方法、加载方法及其装置 | |
JP2021517299A (ja) | データ計算システム | |
CN106681691A (zh) | 基于蒙哥马利模乘的数据处理方法、模乘运算方法和装置 | |
CN103493039B (zh) | 数据处理方法、数据处理装置、接入设备和用户设备 | |
CN100527109C (zh) | 存储器访问装置 | |
CN104750455A (zh) | 一种基于蒙哥马利模乘的数据处理方法和装置 | |
CN105094746A (zh) | 一种椭圆曲线密码的点加/点倍的实现方法 | |
CN104199619A (zh) | 一种在nand中处理数据的方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right |
Effective date of registration: 20230712 Address after: Room 1505, Building B, Huizhi Building, No. 9 Xueqing Road, Haidian District, Beijing, 100085 Patentee after: BEIJING HONGSI ELECTRONIC TECHNOLOGY Co.,Ltd. Address before: 100085 17th floor, block B, Huizhi building, No.9 Xueqing Road, Haidian District, Beijing Patentee before: Feitian Technologies Co.,Ltd. |
|
TR01 | Transfer of patent right |