模乘运算的处理方法、数据加解密处理的方法、装置的制作方法

文档序号:6572172阅读:239来源:国知局
专利名称:模乘运算的处理方法、数据加解密处理的方法、装置的制作方法
技术领域
本发明涉及计算机领域,尤其涉及计算机数据处理中的 一种模乘运算的处理方法、^:据加解密处理的方法、装置。
技术背景大数模乘算法是目前使用的各类公开密钥密码系统的核心单元,比如 RSA算法。RSA算法是目前比较安全且使用最广泛的一种加解密方法,而且 使用该算法可以进行数据签名和身份验证,该算法对数据的处理最主要是通 过模幂计算完成的,而其中模幂计算是通过大数模乘运算来完成。目前较好的模乘算法是Montgomery模乘算法。Montgomery模乘算法的 基本思想是,通过Montgomery变换将大数变换成以余数的形式表示,将变换 后的结果作为操作数参与模乘运算,运算结束后再通过适当的变换将最终计 算结果以正常的形式表示出来。对于单纯的一次模乘运算,这并不算是一种 高效的算法,但是如果将其应用于模幂运算等需要反复进行模乘运算的计算 当中,无论在软件实现还是在硬件实现方面,Motgomery算法已显示出了其 高效性的优点。基于Montgomery模乘法的RSA加解密处理过程主要由3个过程组成 映射过程,模幂乘过程,反映射过程。该3个过程均可用Montgomery模乘 算法来实现。映射过程即将输入数据M映射成^:M"mod7V,再对^进行才莫 幂乘运算得到M卜modiV 。反映射过程是将M modiV转换成MEmod7V ,即去 掉模幂乘结构中的整数因子r,最后得到期望的结果,即M五mod7V。这里r-r,n为模数N的二进制数位宽。这里设MonPro(fl,6)-^6.^modW,模乘运算是实 现Montgomery模幂运算法的关键步骤,在模幂乘计算中会反复用到。目前大数模乘硬件实现比较流行的方法是在一个处理器内以脉动阵列结 构处理高基数数据实现Montgomery模乘。以器件Xilinx公司的XC2V 4000FPGA为例,实现基于高基(比如基为16)的Montgomery模乘运算,做 一次1024位的模乘运算需要用(1024 x2 + 1024) x2048个时钟周期,若整个 系统的时钟频率为150MHz ,则一次运算需要50ms。采用该种方法虽然能够处理高基的模乘运算,但是由于脉动阵列结构采 用流水线的作业方式,造成该方法的实现效率低。发明内容本发明实施例提供一种数据加解密处理的方法,能够提高对数据加解密 的处理速度,提高处理数据的吞吐量。本发明实施例还提供另 一种数据加解密处理的方法,能够提高对数据加 解密的处理速度,提高处理数据的吞吐量。本发明实施例还提供一种数据处理装置,能够提高对模乘运算的处理速 度,提高数据处理效率。本发明实施例还提供一种模乘运算的处理方法,能够提高对模乘运算的 处理速度,提高数据运算处理效率。本发明实施例提供的一种数据加解密处理的方法,包括一种数据加解密处理的方法,其特征是,包括获取由待处理的数据构成的模幂运算,其中所述待处理的数据为待加 密的数据、或待解密的数据;将所述模幂运算转化为模乘运算的循环;将所述模乘运算转化为加法运算的循环;在每次进行所述加法运算过程中,将所述加法运算中的加数、被加数分 別按照从低位到高位的顺序、等位数地分块分别得到所述加数、被加数的各 对应子块,各加法处理器分别对所述加数、被加数的各对应子块进行加法运 算获取各对应子块的运算结果,根据所述各对应子块的运算结果获取所述加 数、被加数的加法运算的结果;在所述模乘运算的循环结束后,根据所述模乘运算的循环结果获取所述 模幂运算的结果;根据所述模幂运算的结果获取处理后的数据,所述处理后的数据为加 密数据、或解密数据。在本发明实施例的方法中,可选地,在将所述待处理的模幂运算转化为 模乘运算的循环之前,还包括计算并存储X承N、 r2modN,其中,所述X为不大于(2n-l)的自然数,所述2。为Booth算法的基, 所述N为模数,所述r等于2n',所述n,为'.对所述模数N进行位扩展后的位 数,且所述n,为基于Booth算法的基的二进制位数的倍数;在将所述待处理的模幂运算转化为模乘运算的循环过程中,或者在将所 述待处理的模乘运算转化为加法运算的循环过程中,当需要用到所述X*N、 r2modN,读取所存储的X*N、 r2modN代入计算。本发明实施例提供的另一种数据加解密处理的方法,包括获取由待处理的数据构成的模乘运算,其中所述待处理的数据为待加 密的数据、或待解密的数据;将所述模乘运算转化为加法运算的循环;在每次进行所述加法运算过程中,将所述加法运算中的加数、被加数分别按照从低位到高位的顺序、等位数地分块分别得到所述加数、被加数的各 对应子块,各加法处理器分别对所述加数、被加数的各对应子块进行加法运 算获取各对应子块的运算结果,根据所述各对应子块的运算结果获取所述加数、被加数的加法运算的结果;在所述加法运算的循环结束后,根据所述加法运算的循环结果获取所述 模乘运算的结果;根据所述模乘运算的结果获取处理后的数据,所述处理后的数据为加 密数据、或解密数据。在本发明实施例的方法中,可选地,在将所述待处理的模乘运算转化为 模加法运算的循环之前,还包括计算并存储X*N,其中所述X为不大于(2n -1 )的自然数,所述2"为 Booth算法的基,所述N为模数,在将所述待处理的模乘运算转化为加法运算的循环过程中,当需要用到 所述X+N,读取所存储的XfN代入计算。本发明实施例提供的数据处理装置,包括第一映射单元,用于将待处理的模乘运算转化为加法运算的循环;分块单元,用于在每次进行所述加法运算过程中,将所述加法运算中的 加数、被加数分别按照从低位到高位的顺序、等位数地分块,分别得到所述 加数、被加数的各对应子块;至少两个加法处理器,所述各加法处理器,用于在每次进行所述加数、 和所述被加数的加法运算过程中,对所述分块单元获取的所述加数、被加数 的各对应子块进行加法运算,获取所述各对应子块的运算结果;主处理器,用于执行循环控制,以及根据所述各加法处理器获取的所述 各对应子块的运算结果获取最终运算结果,其中所述循环控制包括控制由所述第一映射单元转化得到的所述加法运算的循环,所述根据所述各加法处理器获取的所述各对应子块的运算结果获取最终 运算结果包括根据所述各对应子块的运算结果,获取所述加数、被加数的加法运算的 结果,在所述加法运算的循环结束后,根据所述加法运算的循环结果获取所述 模乘运算的结果。在本发明实施例的装置中,可选地,所述待处理的模乘运算为由待处理 的数据构成的模乘运算,所述待处理的数据为待加密数据、或待解密数据;所述主处理器执行的根据所述各加法处理器获取的所述各对应子块的运 算结果获取最终运算结果还包括根据所述模乘运算的结果获取处理后的数据,所述处理后的数据为解 密数据、或加密数据。在本发明实施例的装置中,可选地,所述装置还包括第二映射单元,用于将待处理的模幂运算转化为模乘运算的循环,将各 模乘运算传递至所述第一映射,以供所述第一映射单元将所述模乘运算转化 为所迷加法运算的循环;所述主处理器执行的循环控制还包括控制所述第二映射单元转化得到的所述模乘运算的循环;所述主处理执行的根据所述各加法处理器获取的所述各对应子块的运算 结果获取最终运算结果还包括在所述模乘运算的循环结束后,根据所述模乘运算的循环结果获取所述 模幂运算的结果。在本发明实施例的装置中,可选地,所述待处理的模幂运算为由待处理的数据构成的模幂运算,所述待处理的数据为待加密数据、或待解密数据;所述主处理器执行的根据所述各加法处理器获取的所述各对应子块的运 算结果获取最终运算结果还包括根据所述模幂运算的结果获取处理后的数据,所述处理后的数据为解 密数据、或加密数据。在本发明实施例的装置中,可选地,所述装置还包括计算单元,用于计算XfN、 r2modN,其中,所述X为不大于(2n-l)的自然数,所述2"为Booth算法的基, 所述N为模数,所述r等于2"',所述n,为对所述;f莫数N进行位扩展后的位 数,且所述n,为基于Booth算法的基的二进制位数的倍数;存储单元,用于存储数据,所述数据包括所述计算单元获取的X*N、 r2modN;查询单元,用于查询所述存储单元,获取所存储的X承N、 r2modN。 本发明实施例提供的模乘运算的处理方法,包括 确定待处理的模乘运算; 将所述模乘运算转化为加法运算的循环;在每次进行所述加法运算过程中,将所述加法运算中的加数、被加数分 别按照从低位到高位的顺序、等位数地分块,分别得到所述加数、被加数的 各对应子块,各加法处理器分别对所述加数、被加数的各对应子块进行加法 运算获取各对应子块的运算结果,根据所述各对应子块的运算结果,获取所 述加数、被加数的加法运算的结果;在所述加法运算的循环结束后,根据所述加法运算的循环结果获取所述 模乘运算的结果。在本发明实施例的方法中,可选地,在确定待处理的模乘运算之前,还包括将待处理的模幂运算转化为模乘运算的循环; 所述确定待处理的模乘运算,具体是将所述模乘运算的循环内的各模乘运算作为所述待处理的模乘运算; 在获取所述模乘运算的结果之后,还包括在所述模乘运算的循环结束后,根据所述模乘运算的循环结果获取所述 模幂运算的结果。在本发明实施例的方法中,可选地,在将所述待处理的模幂运算转化为 模乘运算的循环之前,还包括计算并存储X承N、 r2modN,其中,其中,所述X为不大于(2n-l)的自然数,所述2n为Booth算法 的基,所述N为模数,所述r等于2n',所述n,为对所述模数N进行位扩展 后的位数,且所述n,为基于Booth算法的基的二进制位数的倍数;在将所述待处理的模幂运算转化为模乘运算的循环过程中,或者在将所 述待处理的模乘运算转化为加法运算的循环过程中,当需要用到所述X*N、 r2modN,读取所存储的X*N、 r2modN代入计算。由上可见,应用本发明实施例的技术方案,由于在每次进行所述加法运 算过程中,对加数、被加数进行分块处理,由各个加法处理器并行的处理各 对应子块的加法运算,再根据各对应子块的运算结果,获取所述加数、被加 数的加法运算的结果,能够提高各次所述加数、被加数的加法运算的速度, 从而能够更快的完成加法运算的循环而得到模乘运算的结果,完成模乘运算。 即应用本发明实施例的技术方案,能够提高对模乘运算的处理速度,提高处 理模乘运算的效率。在数据加解密领域中,只要该数据加解密处理过程中包含模乘运算的处 理,则应用本发明实施例的技术方案能够提高数据加解密处理的速度,提高 处理数据的吞吐量。


此处所说明的附图用来提供对本发明的进一步理解,构成本申请的 一部分,并不构成对本发明的不当限定,在附图中图1为本发明实施例l提供的一种模乘运算的实现方法的流程示意图;图2为本发明实施例1提供的一种加法分块计算方法的示意图;图3为本发明实施例2提供的一种数据处理装置的结构示意图;图4为本发明实施例2提供的另一种数据处理装置的结构示意图;图5为本发明实施例2提供的又一种数据处理装置的结构示意图;图6为本发明实施例2提供的由多个数据处理构成的并列加解密处理器 阵列;图7为本发明实施例3提供的一种数据加解密方法的流程示意图; 图8为本发明实施例4提供的一种数据加解密方法的流程示意图。
具体实施方式
下面将结合附图以及具体实施例来详细说明本发明,再次本发明的示意 性实施例以及说明用来解释本发明,但并不作为对本发明的限定。实施例1:图1为本实施例提供的模乘运算的实现方法的流程示意图,如图l所示, 该方法包4舌步骤101:确定待处理的模乘运算。输入待处理的模乘运算,该模乘运算可以为用户输入的模乘运算;或者,在加解密应用中,该模乘运算可以为由计算机根据加解密算法 得到的由待加解密数据构成的模乘运算;或者,该模乘运算也可以为当前计算机在处理数据加解密过程中产生 的模乘运算;或者,该模乘运算也可以为计算机在处理模幂运算过程中,由模幂运 算转化成的模乘运算的循环中的任意一次模乘运算。该模幂运算可以为数据 加解密过程中,由待处理的数据构成的模幂运算。如果该模乘运算为由模幂运算转化成的模乘运算的循环中的任意一次 模乘运算,其中将模幂运算转化为模乘运算的循环可以采用以下的技术方案以下以基8Booth算法16进制算法的模幂算法为例,说明在本实施例中 将模幂运算转化为模乘运算的循环的技术方案在本实施例中,基于Booth算法的基的二进制位数为3,设当前的模幂运 算为il^modJV,其中,M为待处理数据、N为已知的模数且要求其为奇数, MmodA^0, E为幂指数,E的取值范围可以为任意正整数。将模幂运算转化为模乘运算的循环可以使用以下描述方案第一步,确定n,的取值,计算C-^modiV-(2"')2modA^其中C为整数因子,r = 2"', n,为对模数N进行位扩展后的位数,且所述n,为基于Booth 算法的基的二进制位数的倍数。第二步,初始化Preo-l,并计算Pre产MonPro—Booth—R8(M,C,N),存储 Pre0 、 Pre!,其中MonPro—Booth—R8(M,C,N)表示基8Booth算法的模乘运算 M*CmodN。使用以下循环计算Prei,并存储各次得到的Pre;,其中j为2、3、 4...15。for i=2; i<= 15; i++{ Pre; = MonPro_Booth_R8( Pre;—i, Pre!, N );〃 MonPro—Booth—R8(PreH, Preb N)表示Prei匿,PretmodN的基8Booth模〃乘运算第三步,计算并存储X+N,其中X分别取值1, 2,…,7,在后续计算 需要使用到N、 2N、 3N、 4N、 5N、 6N、 7N时,可以直接读取本步存储的值, 而避免重复计算,有利于加快数据处理速度,提高运算的效率。第四步,对幂指数E进行分组E = (ek—!ek—2…e,eo),得到(Fs-!Fs-2…Fi F0)。其中,E的位宽为k,对k进行位扩展并保证位扩展后的k,为4的倍数(往 高位补"O,,),对(ek—2 ei eo)分组得到(Fs—,Fs—2…FJo),分组数s = k,/4; 每组4个bit, Fi的取值为0至15的任意整数。第五步,《0 =尸"尸,根据F分组的最高位取得相应的预计算值。>y—1第六步进行以下的循环计算模幂乘中间变量K卜p在本实施例中该计 算迭代需要4次for i —— 1; i<= s - 1 ; i++forj-l; j<=4;j++ , 〃这里幂16的模乘计算 a 4 a2 — a4 4 cj8 — a16 o KH-MonPro—Booth—R8(K卜h Kh, N );Kj= Ki-i;if Fs十广0 , K产MonPrO-Booth一R8(Ki, PreU, N)〃其中MonPro_Booth—R8(Ki, Pre(Fs—卜O, N)表示基8Booth算法的模乘运 〃算Ki*Pre(Fs-H)modN。第七步,计算x = MonPro一Booth一R8( Ks - 1, N ), 其中 MonPro—Booth—R8(KS—,, 1, N)表示基8Booth算法的模乘运算Ks-lmodN。第八步,返回x。 结束。按照上述的方案可以完成将模幂运算转化为模乘运算的循环。除了上述 本实施例提供的方案外,也可以使用现有技术的其他技术方案来完成将模幂 运算转化为模乘运算的循环,在此不一一列举。步骤102:将模乘运算转化为加法运算的循环。根据Montgomery算法,将待处理的模乘运算转化为加法运算的循环。以下以基8Booth算法的模乘算法为例,说明在本实施例中如何根据 Montgomery算法将待处理的模乘运算转化为加法运算的循环设当前的模乘运算为A*B*r—1 modN,其中,A、 B分别为该模乘运算的 乘数、被乘数,A、 B的取值范围可以为任意正整数,r为模乘因子、N为模 数且要求其为奇数。第一步,判断执行条件,不符合则返回,判定条件是N为奇数。第二步,求位宽n,的取值对模数N进行位扩展后的位数,且所述n, 为基于Booth算法的基的二进制位数的倍数。需要说明的是,如果该模乘运算为由模幂运算转化得到的模乘运算循环中的任意一个模乘运算的话,那么n,可以在将模幂转化为模乘的过程中得 到。第三步,初始置零二进制中间变量P, q: P(;wWW.."o) =0, q第四步,由〃=S 得到7V—其中7V—Z幼3为模数N的低三位。/=0 z - -第五步,计算并预存储X4B,其中X分别取值-4, -3, -2, -1, 1, 2, 3, 4。第六步,根据Booth编码将乘数A分解为基8形式输出A=Booth—R8(A,n,) = {c"73,c"'/3-l,C"'/3-2,...,Cl,c0} °第七步,进行以下循环for(i = 0 ; i<=n,/3—l ; i = i++)《.=(尸.+匚*5)1110(18; 〃计算并存储力。 尸丄1 =(尸.+ c,. * 5 + Sel一R , iV—* A0 / 8;〃计算并存储^.+1,其中Sel—R8取值为0至7 , SeLR8,W可以在模幂转模 〃乘的第三步计算得到并存储好,在进行到本步骤时,从预存值中直接读 〃取既可。第八步,返回/^,/3值。在本实施例中,可以执行第五步的步骤计算并预存储X*B (X分别取值 4, -3, -2, -1, 1, 2, 3, 4),从而使得在第七步计算力和Pi+1时不需要每次都计算c,5 ,而只需要通过查询读取第五步预存的相应值即可。由上可见,根据Montgomery算法,可以将模乘运算A*B*r—imodN转 化为加法运算巧+1 二(巧+c^5 + SeLR8(力,iV—丄幼3)承A0/8的循环。除了本实施例提供的上述方案外,也可以使用现有技术的其他技术方案 来完成将模乘运算转化为加法运算的循环,在此不——列举。步骤103:循环计算由模乘运算转化为各加法运算。在每次进行所述加法运算过程中,将所述加法运算中的加数、被加数分 别按照从低位到高位的顺序、等位数地分块,分别得到所述加数、被加数的 各子块;各加法处理器分别对所述加数、被加数的各对应子块进行加法运算 获取各对应子块的运算结果;再根据所述各加法处理器得到的各对应子块的 运算结果,获取当前所述加数、被加数的加法运算的结果。如果加法处理器 在子块的加法运算中产生了进位,则将低位块所进行加法运算产生的进位值 进位到高位块所进行加法运算得到的运算结果。假设当前的进行加法的加数、被加数分别为1024位的大数C、 D,上述 分块以及计算过程可以具体如下如图2所示,把两个1024位的大数C、 D分别等位数地分为4块Cl、 C2、 C3、 C4和D1、 D2、 D3、 D4,每块256位。各对应子块分别相加,即 Cl与Dl、 C2与D2、 C3与D3、 C4与D4相加,对应的加法处理器分别为 PC201、 PC202、 PC203、 PC204,产生结果CD1、 CD2、 CD3、 CD4和对应的进位E1、 E2、 E3、 E4。主处理器PC200先判断El和E3是否真的存在进 位,如果存在进位,则主处理器PC200需要再次调用加法处理器PC202和 PC204把进位加到相应的后一个块的相加结果中,即El与CD2、 E3与CD4, 从而得到两个512位的数CD12和CD34,以及进位D12和E34。主处理器200 再通过判断E12来决定是否需要调用加法处理器PC205来加上进位C12,这 样就得到了两个1024位大数C与D相加的最终结果Y。需要说明的是,在本实施例中,加法处理器PC201、 PC202、 PC203、 PC204 做256位的加法运算,根据处理器的运算能力对两个256位数据进行分块, 设本发明实施例采用的处理器每次进行16位运算,则可以分成256/16=16块, 即做一次256位的大数加法运算,需要进行16次带进位的加法操作。同时, 加法处理器PC202、 PC204对于其加数为1,被加数为256位大数的情况做了 优化处理,只要加法运算不产生进位则运算结束。加法处理器PC204做512 位的加法运算,其中一个加数只有l位。上述对将加数、被加数进行分块,并分別对各自对应块进行运算进行了 示例性的描述,但是在实际应用中,对加数、被加数的分块并不拘限于上述 的方案,用户可以根据实际情况进行具体分块,甚至可以任意分块,只要保 证分块为按照从低位到高位的顺序、等位数分块即可。需要说明的是,本实施例中的加法处理器PC201、 PC202、 PC203、 PC204 以及主处理器PC200可以使用并行阵列处理器来实现。按照上述的技术方案可以处理由所述模乘运算转化为加法运算的循环内 的每个加法运算。步骤104:在加法运算的循环结束后,根据加法运算的循环结果获取该模 乘运算的结果。由上可见,在本实施例中,由于在每次进行所述加法运算过程中,通过 对加数、被加数进行分块处理,并由各个加法处理器并行的处理各对应子块的加法运算,根据各对应子块的运算结果,获取所述加数、被加数的加法运 算的结果,能够提高各次所述加数、被加数的加法运算的速度,从而能够更 快地完成加法运算的循环,而得到模乘运算的结果完成模乘运算。即应用本 发明实施例的技术方案,能够提高对模乘运算的处理速度,提高处理模乘运 算的效率。另外的,还可以将本发明实施例的技术方案应用到对模幂运算的处理中 通过将待处理的模幂运算转化为模乘运算的循环,再对每个模乘运算应用本 发明实施例的技术方案,由于应用本发明实施例的技术方案,能够提高对各 次模乘运算的处理效率提高了 ,能够更快地完成模乘运算的循环得到模幂运 算的结果,因此应用本发明实施例提供的技术方案能够提高处理模幂运算的 效率。另外的,如果当前的加密算法为模乘运算,即当前处理的模乘运算为由 待加密数据(明文)构成的模乘运算,则还可以根据该模乘运算的结果获取 加密数据(加密后的数据,密文),完成对数据的加密。如果当前的解密算法 为模乘运算,即当前处理的模乘运算为由加密数据(密文)构成的模乘运算, 则还可以根据该模乘运算的结果获取解密数据(解密后的数据,明文),完成 对数据的解密。如果当前的加密算法为模幂运算,即当前处理的模乘运算为 由待加密数据(明文)构成的模幂运算,则可以在加密过程中,将模幂运算 转化成模乘运算的循环,在对各模乘运算应用本发明实施例的方法,最后得 到模幂运算的结果,根据该模幕运算的结果可以获取加密数据(密文),完成 对数据的加密。如果当前的加密算法为模幂运算,即当前处理的模乘运算为 由加密数据(密文)构成的模幂运算,则可以在解密过程中,将模幂运算转 化成模乘运算的循环,在对各^t乘运算应用本发明实施例的方法,最后得到 模幂运算的结果,则根据该模幂运算的结果可以获取解密数据(明文),完成 对数据的解密。可见,将本实施例应用到数据加解密领域中,如果当前的加 密、或解密算法中包含有模乘运算、或模幂运算,那么在加密、或解密过程中应用本发明实施例的技术方案,能够提高对数据的加密、或解密速度,提 高处理数据的吞吐量。实施例2:如图3所示为本实施例的一种数据处理装置的结构示意图,如图是,该 装置可以包括第一映射单元301,用于将由待处理的模乘运算转化为加法运算的循环。 该具体转换方案可以参见本发明实施例1中步骤102中的相应描述。分块单元302,用于在每次进行所述加法运算过程中,将所述加法运算中 的加数、被加数分别按照从低位到高位的顺序、等位数地分块,分别得到所 述加数、被加数的各对应子块。其具体分块方法可以参见本发明实施例1中 步骤103中的相应描述。至少两个加法处理器303,所述各加法处理器303,用于在每次进行所述 加数、和所述被加数的加法运算过程中,对所述分块单元302获取的所述加 数、被加数的各对应子块分别进行加法运算,获取各对应子块的运算结果, 其具体分块方法可以参见本发明实施例1中步骤103中的相应描述。本实施例中的加法处理器303可以为本发明实施例1中的加法处理器 PC201、 PC202、 PC203、 PC204。主处理器304,用于执行循环控制,以及根据所述各加法处理器获取的所 述各对应子块的运算结果获取最终运算结果。在本实施例中,主处理器304执行的循环控制包括具体包括控制第一映射单元301转化得到的所述加法运算的循环循环控制单元 302根据所述加法循环的循环次数,控制所述加法运算的循环。主处理器304执行的根据各加法处理器303获取的所述各对应子块的运 算结果获取最终运算结果包括主处理器304根据各加法处理器303的运算结果,获取所述加数、被加 数的加法运算的结果;主处理器304在所述加法运算的循环结束后,根据所述加法运算的循环 结果获取所述模乘运算的结果。在本实施中,主处理器304、以及各加法处理器303可以使用并行阵列处 理器实现。由上可见,在本发明实施例中,采用图3所示的装置,装置中的第一映 射单元301将待处理的模乘运算转化为加法运算的循环,再对所转化成的各 加法运算,使用分块单元302将加数、被加数各等分成若干个子块,在分别 由各加法处理器分别对各对应子块进行加法运算,在各加法处理对各对应子 块进行加法运算后,由主处理器304根据各加法处理器的运算结果得到各次 循环的加法运算结果,加法运算循环结束后可以得到模乘运算的结果。由于 各加法处理器303并行地处理各对应子块的加法运算,主处理器304根据各 对应子块的运算结果,计算所述加数、被加数的加法运算,每次加法运算的 处理速度提高了,那么完成该加法循环的速度相应能够提高,即获取模乘运 算的结果的速度提高。可见应用本发明实施例的装置能够提高对模乘运算的 处理速度,提高了处理模乘运算的效率。另外的,可以将图3所示结构的装置应用于数据加解密的处理,如果当 前待处理的模幂运算为由待处理的数据构成的模乘运算,该待处理的数据 为待加密数据、或待解密数据;主处理器304执行的根据各加法处理器303获取的所述各对应子块的运 算结果获取最终运算结果还包括根据所述模乘运算的结果获取处理后的数据,所述处理后的数据为解 密数据、或加密数据。将图3所示结构的装置应用于包含^^乘运算的凝:据加解密处理时,由于对加法处理的速度、效率提高了,从而能够提高对模乘运算的处理速度、效 率,从而提高对数据加解密的处理效率,提高数据处理的吞吐量。另外,如图4所示,本发明实施例的装置还可以包括第二映射单元401,用于将待处理的模幂运算转化为模乘运算的循环,将 各模乘运算传递至所述第一映射301,以供所述第一映射单元301将所述模乘 运算转化为所述加法运算的循环。相应的,主处理器402执行的循环控制还包括控制第二映射单元401转化得到的所述模乘运算的循环;主处理402执行的根据各加法处理器303获取的各对应子块的运算结果 获取最终运算结果还包括在模乘运算的循环结束后,根据模乘运算的循环结果获取所述模幂运算 的结果。可见,如图4所示的装置,还可以应用于处理模幂运算,并且由于处理 模乘运算的速度提高了 ,相应的能够更快地完成模乘运算的循环从而得到模 幂运算的结果,即应用如图4所示的装置,能够提高处理模幂运算的速度。另外的,可以将图4所示结构的装置应用于数据加解密的处理,比如RSA 加解密。如果当前待处理的模幂运算为由待处理的数据构成的模幂运算,该待 处理的数据为待加密数据、或待解密数据。主处理器402执行的根据各加法处理器303获取的所述各对应子块的运 算结果获取最终运算结果还包括根据所述模幂运算的结果获取处理后的数据,所述处理后的数据为解 密数据、或加密数据。可见,将图4所示结构的装置应用于包含模幂运算的it据加解密处理时,由于对加法处理的速度、效率提高了,从而能够提高对模乘运算的处理速度, 从而提高模幂运算的处理速度,从而提高对数据加解密的处理效率,提高数 据处理的吞吐量。如图5所示,本发明实施例的数据处理装置还可以包括计算单元501,用于计算X承N、 r2modN,其中X为不大于(2n-l)的自 然数,2n为Booth算法的基,N为模数,n,为对模数N进行位扩展后的位 数,且n,为基于Booth算法的基的二进制位数的倍数。存储单元502,用于存储数据,所述数据包括所述计算单元307获取的 X*N、 r2modN。查询单元503,用于在运算过程中,每需用到所述X申N、 一modN时,查 询所述存储单元502获取所存储的X *N、 r2modN。查询单元503可以与各个 加法处理器303相连接。应用图5所示的装置,可以将运算处理过程中频繁用到的参数(X*N、 r2modN)预先计算并存储在存储单元502中,在每次计算需要时,只需要有 查询单元503查询存储单元502读取即可,而无需在每次需要时都进行计算, 能够减少计算的次数,有利于提高运算效率。需要说明的是,在本实施例中,图4中的第一映射单元301、第二映射单 元401既可以独立设计,也可以集成设计;图5中的计算单元501、以及主处 理器304既可以独立设计,也可以集成设计;或者图5中的第一映射单元301、 第二映射单元401、计算单元501、主处理器304既可以独立设计,也可以集 成设计。另外的,在加解密的应用中,比如RSA加解密的应用中,需要并行运 行多个数据加解密处理,应用本发明实施例的技术方案,可以设置多个数据 处理的装置601 (该数据处理装置601可以为如图3、图4或图5所示的数 据处理的装置)配置构成由多个数据处理构成的并列加解密处理器阵列(如图6所示),用户可以同时调用多个装置进行数据加解密处理,提高处理数据 的吞吐量。需要说明的是,在本发明实施例中的数据处理装置可以为由硬件构成的 独立的设备或硬件模块,亦可以为以软件的形式存储在一个计算机可读存储 介质中的功能模块。实施例3:如图7所示为本发明实施例提供的一种数据加解密方法的流程示意图, 如图示,该方法包括步骤701:获取待处理的数据。获取待处理的数据,其中所述待处理的数据为待加密的数据、或待解密 的数据。步骤702:获取由待处理的数据构成的模幂运算。设当前的待处理数据为M,模数为N,幂指数为E,则获取由所述待处 理的数据构成的模幂运算为ME*rmodN,其中r为映射因子。步骤703:将该模幂运算转化为模乘运算的循环。可以根据现有技术的各种技术方案将所述模幂运算转化为模乘运算的循 环。可以参见实施例1中步骤101中的相应描述。步骤703:将各模幂运算转化为模乘运算的循环。可以参见实施例1中的步骤102中的相应描述。步骤704:循环计算由模乘运算转化为各加法运算。可以参见实施例1中的步骤103中的相应描述。步骤705:在模乘运算的循环结束后,得到模幂运算的结果,根据模幂运 算的结果获取处理后的数据加密数据、或解密数据。得到模幂运算的处理结果后,去掉模幂结构中的映射因子r得到处理后的 数据(即期望的数据,即加密后的数据、或解密后的数据)。由上可见,应用本发明实施例的装置,由于在每次进行所述加法运算过 程中,通过对加数、被加数进行分块处理,并由各个加法处理器并行的处理 各对应子块的加法运算,提高了各次加法运算的速度,从而能够更快地得到 模乘运算的结果,更快的完成每次模乘运算,从而能够更快的完成模乘运算 的循环得到模幂运算的结果,从而可以更快地根据模幂运算的结果得到处理 后的数据。可见应用本实施例的技术方案可以提高数据加解密处理的速度、 能够提高处理数据的吞吐量。实施例4:图8为步骤801:获取待处理的数据。获取待处理的数据,其中所述待处理的数据为待加密的数据、或待解密 的数据。步骤802:获取由所述待处理的数据构成的模乘运算。设当前的待处理数据为M,模数为N,则由所述待处理的数据构成的模 乘运算可以为M*CmodN,其中C为预定的才莫乘运算参数。步骤803:将模乘运算转化为加法运算的循环。可以参见实施例1中的步骤102中的相应描述。步骤804:循环计算由模乘运算转化为各加法运算。可以参见实施例1中的步骤103中的相应描述。步骤805:在加法运算的循环结束后,得到模乘运算的结果,再根据模乘 运算的结果获取处理后的数据加密数据、或解密数据。由上可见,应用本发明实施例的装置,由于在每次进行所述加法运算过程中,通过对加数、被加数进行分块处理,并由各个加法处理器并行的处理 各对应子块的加法运算,提高了各次加法运算的速度,从而能够更快地得到 模乘运算的结果,从而可以更快地根据模乘运算的结果得到处理后的数据。 可见应用本实施例的技术方案可以提高数据加解密处理的速度、能够提高处 理数据的吞吐量。以上对本发明实施例提供的技术方案进行了详细介绍,本文中应用了具 体个例对本发明实施例的原理以及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明实施例的方法以及原理;同时,对于本领域的一半 技术人员,依辨本发明实施例,在具体实施方式
以及应用范围上均会有改变 之处,综上所述,本说明书内容不应理解为对本发明的限制。
权利要求
1、一种数据加解密处理的方法,其特征是,包括获取由待处理的数据构成的模幂运算,其中所述待处理的数据为待加密的数据、或待解密的数据;将所述模幂运算转化为模乘运算的循环;将所述模乘运算转化为加法运算的循环;在每次进行所述加法运算过程中,将所述加法运算中的加数、被加数分别按照从低位到高位的顺序、等位数地分块分别得到所述加数、被加数的各对应子块,各加法处理器分别对所述加数、被加数的各对应子块进行加法运算获取各对应子块的运算结果,根据所述各对应子块的运算结果获取所述加数、被加数的加法运算的结果;在所述模乘运算的循环结束后,根据所述模乘运算的循环结果获取所述模幂运算的结果;根据所述模幂运算的结果获取处理后的数据,所述处理后的数据为加密数据、或解密数据。
2、 一种数据加解密处理的方法,其特征是,包括获取由待处理的数据构成的模乘运算,其中所述待处理的数据为待加 密的数据、或待解密的数据;将所述模乘运算转化为加法运算的循环;在每次进行所述加法运算过程中,将所述加法运算中的加数、被加数分 别按照从低位到高位的顺序、等位数地分块分别得到所述加数、被加数的各 对应子块,各加法处理器分别对所述加数、被加数的各对应子块进行加法运 算获取各对应子块的运算结果,根据所述各对应子块的运算结果获取所述加 数、被加数的加法运算的结果;在所述加法运算的循环结束后,根据所述加法运算的循环结果获取所述模乘运算的结果;根据所述模乘运算的结果获取处理后的数据,所述处理后的数据为加 密数据、或解密数据。
3、 一种数据处理装置,其特征是,所述装置包括第一映射单元,用于将待处理的模乘运算转化为加法运算的循环;分块单元,用于在每次进行所述加法运算过程中,将所述加法运算中的 加数、被加数分别按照从低位到高位的顺序、等位数地分块,分别得到所述 加数、被加数的各对应子块;至少两个加法处理器,所述各加法处理器,用于在每次进行所述加数、 和所述被加数的加法运算过程中,对所述分块单元获取的所述加数、被加数 的各对应子块进行加法运算,获取所述各对应子块的运算结果;主处理器,用于执行循环控制,以及根据所述各加法处理器获取的所述 各对应子块的运算结果获取最终运算结果,其中所述循环控制包括控制由所述第 一映射单元转化得到的所述加法运算的循环,所述根据所述各加法处理器获取的所述各对应子块的运算结果获取最终 运算结果包括根据所述各对应子块的运算结果,获取所述加数、被加数的加法运算的 结果,在所述加法运算的循环结束后,根据所述加法运算的循环结果获取所述 模乘运算的结果。
4、 根据权利要求3所述的数据处理装置,其特征是,所述待处理的模乘 运算为由待处理的数据构成的模乘运算,所述待处理的数据为待加密数据、 或待解密数据;所述主处理器执行的根据所述各加法处理器荻取的所述各对应子块的运算结果获取最终运算结果还包括根据所述模乘运算的结果获取处理后的数据,所述处理后的数据为解 密数据、或加密数据。
5、 根据权利要求4所述的数据处理装置,其特征是,所述装置还包括第二映射单元,用于将待处理的模幂运算转化为模乘运算的循环,将各 模乘运算传递至所述第一映射,以供所述第一映射单元将所述模乘运算转化 为所述加法运算的循环;所述主处理器执行的循环控制还包括控制所述第二映射单元转化得到的所述模乘运算的循环;所述主处理执行的根据所述各加法处理器获取的所述各对应子块的运算 结果获取最终运算结果还包括在所述模乘运算的循环结束后,根据所述模乘运算的循环结果获取所述 模幂运算的结果。
6、 根据权利要求5所述的数据处理装置,其特征是,所述待处理的模幂 运算为由待处理的数据构成的模幂运算,所述待处理的数据为待加密数据、 或待解密数据;所述主处理器执行的根据所述各加法处理器获取的所述各对应子块的运 算结果获取最终运算结果还包括根据所述模幂运算的结果获取处理后的数据,所述处理后的数据为解 密数据、或加密数据。
7、 根据权利要求3至5之任一所述的数据处理装置,其特征是,所述装 置还包括计算单元,用于计算X+N、 r2modN,其中,所述X为不大于(2n-l)的自然数,所述2。为Booth算法的基, 所述N为模数,所述r等于2"',所述n,为对所述模数N进行位扩展后的位 数,且所述n,为基于Booth算法的基的二进制位数的倍数;存储单元,用于存储数据,所述数据包括所述计算单元获取的X*N、 r modNj查询单元,用于查询所述存储单元,获取所存储的X氺N、 r2modN。
8、 一种模乘运算的处理方法,其特征是,包括 确定待处理的模乘运算; 将所述模乘运算转化为加法运算的循环;在每次进行所述加法运算过程中,将所述加法运算中的加数、被加数分 别按照从低位到高位的顺序、等位数地分块,分别得到所述加数、被加数的 各对应子块,各加法处理器分別对所述加数、被加数的各对应子块进行加法 运算获取各对应子块的运算结果,根据所述各对应子块的运算结果,获取所 述加数、^皮加数的加法运算的结果;在所述加法运算的循环结束后,根据所述加法运算的循环结果获取所述 模乘运算的结果。
9、 根据权利要求8所述的模乘运算的处理方法,其特征是,在确定待处 理的模乘运算之前,还包括将待处理的模幂运算转化为模乘运算的循环;所述确定待处理的模乘运算,具体是将所述模乘运算的循环内的各模乘运算作为所述待处理的模乘运算; 在获取所述模乘运算的结果之后,还包括在所述模乘运算的循环结束后,根据所述模乘运算的循环结果获取所述 模幂运算的结果。
10、根据权利要求9所述的模乘运算的处理方法,其特征是,在将所述 待处理的模幂运算转化为模乘运算的循环之前,还包括计算并存储乂<formula>formula see original document page 6</formula>,其中,其中,所述X为不大于(2n-l)的自然数,所述2n为Booth算法 的基,所述N为模数,所述r等于2n',所述n,为对所述模数N进行位扩展 后的位数,且所述n,为基于Booth算法的基的二进制位数的倍数;在将所述待处理的模幂运算转化为模乘运算的循环过程中,或者在将所述待 处理的模乘运算转化为加法运算的循环过程中,当需要用到所述X*N、 r2modN,读取所存储的X*N、 r2modN代入计算。
全文摘要
本发明涉及计算机领域,本发明实施例公开了一种模乘运算的处理方法、数据加解密处理的方法、装置,该模乘运算的处理方法包括确定待处理的模乘运算;将模乘运算转化为加法运算的循环;在每次进行所述加法运算过程中,将该加法运算中的加数、被加数分别按照从低位到高位的顺序、等位数地分块,分别得到所述加数、被加数的各对应子块,各加法处理器分别对所述加数、被加数的各对应子块进行加法运算获取各对应子块的运算结果,根据各对应子块的运算结果,获取所述加数、被加数的加法运算的结果;在所述加法运算的循环结束后,根据所述加法运算的循环结果获取所述模乘运算的结果。应用本发明实施例的技术方案能够提高运算速度,提高运算处理效率。
文档编号G06F7/72GK101216754SQ200710032940
公开日2008年7月9日 申请日期2007年12月27日 优先权日2007年12月27日
发明者刘军林, 张永强, 凡 林 申请人:广州杰赛科技股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1