專利名稱:模乘運算的處理方法、數據加解密處理的方法、裝置的制作方法
技術領域:
本發明涉及計算機領域,尤其涉及計算機數據處理中的 一種模乘運算的處理方法、^:據加解密處理的方法、裝置。
技術背景大數模乘算法是目前使用的各類公開密鑰密碼系統的核心單元,比如 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日
發明者劉軍林, 張永強, 凡 林 申請人:廣州杰賽科技股份有限公司