欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

模逆運算方法及運算器的制造方法

文檔序號:10624554閱讀:563來源:國知局
模逆運算方法及運算器的制造方法
【專利摘要】一種模逆運算方法及運算器,用于計算Z=Y-1mod X,其中Z為所述模逆運算的結果,X為第一操作數(shù),Y為第二操作數(shù),所述模逆運算方法包括:計算獲取第一操作數(shù)X的二進制位長Xlen以及第二操作數(shù)Y的二進制位長Ylen;初始化第一變量R與第二變量S;當Xlen≥Ylen時,計算X模Y,當Xlen≤Ylen時,計算Y模X。在更新后的X=0且更新后的Y=1時,所述模逆運算的結果為更新后的第二變量S;在更新后的X=1且更新后的Y=0時,所述模逆運算的結果為X的初始值與更新后的第一變量R之差;在更新后的X與更新后的Y其中之一等于0而另一個不等于1時,所述模逆運算的結果不存在。采用所述方法及運算器,可實現(xiàn)模為任意非零整數(shù)的模逆運算,提高模逆運算的計算效率,降低硬件功耗。
【專利說明】
模逆運算方法及運算器
技術領域
[0001] 本發(fā)明設及信息安全領域,尤其設及一種模逆運算方法及運算器。
【背景技術】
[0002] 模逆運算廣泛應用在公鑰密碼體制中,例如,在RSA算法中的解密密鑰生成時應 用到模逆運算,模逆運算也可W用于楠圓曲線密碼算法中的點加和倍點運算。
[0003] 目前,求解模逆運算的方法主要包括模幕算法、擴展歐幾里得算法、二進制擴展歐 幾里得算法等。
[0004] 模幕算法W費馬小定理為基礎,將模逆運算轉(zhuǎn)換成模幕運算,但是模幕算法無法 確定模逆結果是否存在。采用模乘器作為硬件運算單元,較為復雜且功耗較大。 陽0化]擴展歐幾里得算法通過無轉(zhuǎn)相除計算最大公因子求解模逆,當最大公因子為非1 整數(shù)時無法獲取模逆的計算結果。采用除法器作為硬件運算單元,實現(xiàn)仍較為復雜。
[0006] 二進制擴展歐幾里得算法將除法轉(zhuǎn)換成移位和加減法,但是,在移位的過程中,操 作數(shù)的權值發(fā)生了改變,最終運算結果中包含有2"(η為操作數(shù)的位長)項權重因子,去除 權重因子需進行多次除2的操作,因此,要求模必須是奇數(shù)。
[0007] 現(xiàn)有的二進制擴展歐幾里得算法方法在進行模逆運算時仍存在一定的限制,無法 針對任意非零整數(shù)求模,并且計算過程較為復雜。

【發(fā)明內(nèi)容】

[0008] 本發(fā)明實施例解決的問題是如何實現(xiàn)對任意非零整數(shù)求模,并提高模逆運算的計 算效率,降低硬件功耗。
[0009] 為解決上述問題,本發(fā)明實施例提供一種模逆運算方法,用于計算Ζ = Υ imodX,其 中Z為所述模逆運算的結果,X為第一操作數(shù),Y為第二操作數(shù),包括:
[0010] 獲取第一操作數(shù)X的二進制位長xien W及第二操作數(shù)Y的二進制位長Ylen ;初 始化第一變量R與第二變量S ; W11]當 Xlen > Ylen 時,計算 X 模 Y :
[0012] 在X為正數(shù)時,將X左移N1位至最高位為1,低位補N1位無效0,將左移后的X與 Y高位對齊相減,將差值的后N1位去除,作為更新后的X,將第一變量R與左移狂len-Ylen) 位的第二變量S低位對齊相加之和作為更新后的第一變量R ; 陽01引在X為負數(shù)時,將X左移N2化低位補N2位無效0,將左移后的X與Y高位對齊相 加,將和值的后N2位去除,作為更新后的X,將第一變量R與左移狂len-Ylen)位的第二變 量S低位對齊并相減,得到的差值作為更新后的第一變量R ;其中,N2為:X最高位的0前的 符號位的個數(shù)N3與狂len-Ylen)之間的最小值;
[0014] 當Xlen《Ylen時,計算Y模X:
[0015] 在Y為正數(shù)時,將Y左移Ml位至最高位為1,低位補Ml位無效0,將左移后的Y與 X高位對齊相減,將差值的后Ml位去除,作為更新后的Y ;將第二變量S與左移燈len-xien) 位的第一變量R低位對齊相加之和作為更新后的第二變量S ;
[0016] 在Y為負數(shù)時,將Y左移M2位,低位補M2位無效0,將左移后的Y與X高位對齊相 加,將和值的后M2位去除,作為更新后的Y ;將第二變量S與左移燈len-Xlen)位的第一變 量R低位對齊并相減,得到的差值作為更新后的第二變量S ;其中,M2為:Y最高位的0前的 符號位的個數(shù)M3與(Ylen-Xlen)之間的最小值;
[0017] 在更新后的X = 0且更新后的Y = 1時,所述模逆運算的結果為更新后的第二變 量S ;在更新后的X = 1且更新后的Y = 0時,所述模逆運算的結果為X的初始值與更新后 的第一變量R之差;在更新后的X與更新后的Y其中之一等于0而另一個不等于1時,所述 模逆運算的結果不存在。
[0018] 本發(fā)明實施例還提供了一種模逆運算器,用于計算Z = Y imod X,其中Z為所述模 逆運算的結果,X為第一操作數(shù),Y為第二操作數(shù),包括:控制器、移位器、加減法運算器W及 存儲器,其中:
[0019] 獲取第一操作數(shù)X和第二操作數(shù)Y,W及第一操作數(shù)X的二進制位長Xlen、第二操 作數(shù)Y的二進制位長Ylen ;初始化第一變量R與第二變量S ;
[0020] 當 Xlen > Ylen 時,計算 X 模 Y :
[0021] 在X為正數(shù)時,將X左移N1位至最高位為1,低位補N1位無效0,將左移后的X與 Y高位對齊相減,將差值的后N1位去除,作為更新后的X,將第一變量R與左移狂len-Ylen) 位的第二變量S低位對齊相加之和作為更新后的第一變量R ; 陽02引在X為負數(shù)時,將X左移N2化低位補N2位無效0,將左移后的X與Y高位對齊相 加,將和值的后N2位去除,作為更新后的X,將第一變量R與左移狂len-Ylen)位的第二變 量S低位對齊并相減,得到的差值作為更新后的第一變量R ;其中,N2為:X最高位的0前的 符號位的個數(shù)N3與狂len-Ylen)之間的最小值;
[0023] 當Xlen《Ylen時,計算Y模X :
[0024] 在Y為正數(shù)時,將Y左移Ml位至最高位為1,低位補Ml位無效0,將左移后的Y與 X高位對齊相減,將差值的后Ml位去除,作為更新后的Y ;將第二變量S與左移燈len-Xlen) 位的第一變量R低位對齊相加之和作為更新后的第二變量S ; 陽02引在Y為負數(shù)時,將Y左移M2化低位補M2位無效0,將左移后的Y與X高位對齊相 加,將和值的后M2位去除,作為更新后的Y ;將第二變量S與左移燈len-Xlen)位的第一變 量R低位對齊并相減,得到的差值作為更新后的第二變量S ;其中,M2為:Y最高位的0前的 符號位的個數(shù)M3與燈len-Xlen)之間的最小值;
[00%] 在更新后的X = 0且更新后的Y = 1時,所述模逆運算的結果為更新后的第二變 量S ;在更新后的X = 1且更新后的Y = 0時,所述模逆運算的結果為X的初始值與更新后 的第一變量R之差;在更新后的X與更新后的Y其中之一等于0而另一個不等于1時,所述 模逆運算的結果不存在。
[0027] 與現(xiàn)有技術相比,本發(fā)明實施例的技術方案具有W下優(yōu)點:
[0028] 在第一操作數(shù)X位長大于第二操作數(shù)Y時,X左移時可W消除冗余的符號位,通過 變量Xlen記錄X的實時位長,X的權值沒有發(fā)生變化。R和S的運算遵循低位對齊的運算 方法,R無左移操作,即R的權值也沒有發(fā)生改變。類似的,在Y位長大于X時,Y左移時可 W消除冗余的符號位,通過變量Ylen記錄Y的實時位長,Y的權值沒有發(fā)生變化。R和S的 運算遵循低位對齊的運算方法,s無左移操作,即s的權值也沒有發(fā)生改變。即在整個模逆 運算過程中,運算的結果不包括權重因子,相比于現(xiàn)有的二進制擴展歐幾里得算法,不需要 再對運算結果進行權重因子的消除操作,并且可W不限定模必須為奇數(shù),可W實現(xiàn)模為任 意非零整數(shù)的模逆運算,并提高模逆運算的計算效率,降低硬件功耗。
【附圖說明】
[0029] 圖1是本發(fā)明實施例中的一種模逆運算方法的流程圖;
[0030] 圖2是本發(fā)明實施例中的一種模逆運算器的結構示意圖。
【具體實施方式】
[0031] 現(xiàn)有的二進制擴展歐幾里得算法將除法轉(zhuǎn)換成移位和加減法,但是,在移位的過 程中,操作數(shù)的權值發(fā)生了改變,最終運算結果中包含有2"(η為操作數(shù)的位長)項權重因 子,去除權重因子需進行多次除2的操作,因此,要求模必須是奇數(shù)。但是,現(xiàn)有的二進制擴 展歐幾里得算法方法在進行模逆運算時仍存在一定的限制,無法針對任意非零整數(shù)求模, 并且計算過程較為復雜。
[0032] 在本發(fā)明實施例中,在第一操作數(shù)X位長大于第二操作數(shù)Υ時,X左移時可W消除 冗余的符號位,通過變量Xlen記錄X的實時位長,X的權值沒有發(fā)生變化。R和S的運算遵 循低位對齊的運算方法,R無左移操作,即R的權值也沒有發(fā)生改變。類似的,在Y位長大 于X時,Y左移時可W消除冗余的符號位,通過變量Ylen記錄Y的實時位長,Y的權值沒有 發(fā)生變化。R和S的運算遵循低位對齊的運算方法,S無左移操作,即S的權值也沒有發(fā)生 改變。在整個模逆運算過程中,運算的結果不包括權重因子,相比于現(xiàn)有的二進制擴展歐幾 里得算法,不需要再對運算結果進行權重因子的消除操作,并且可W不限定模必須為奇數(shù), 可W實現(xiàn)對任意非零整數(shù)求模。
[0033] 為使本發(fā)明實施例的上述目的、特征和優(yōu)點能夠更為明顯易懂,下面結合附圖對 本發(fā)明的具體實施例做詳細的說明。
[0034] 本發(fā)明實施例提供了一種模逆運算方法,用于計算Z = Y imodX,其中Z為所述模 逆運算的結果,X為第一操作數(shù),Y為第二操作數(shù),參照圖1,W下通過具體步驟對本發(fā)明實 施例提供的模逆運算方法進行詳細說明。
[0035] 步驟S101,獲取第一操作數(shù)X的二進制位長Xlen W及第二操作數(shù)Y的二進制位長 Ylen,初始化第一變量R與第二變量S。
[0036] 在具體實施中,第一操作數(shù)X和第二操作數(shù)Y均為非0的正整數(shù)。在獲取到第一 操作數(shù)X和第二操作數(shù)Y之后,將第一操作數(shù)X和第二操作數(shù)Y依次進行二進制轉(zhuǎn)換,從而 可W分別獲取第一操作數(shù)X對應的初始二進制位長xien,W及第二操作數(shù)Y對應的初始二 進制位長Ylen。
[0037] 例如,計算Z = 13 imodl7,即第一操作數(shù)X的值為17,轉(zhuǎn)換成二進制數(shù)為X = 10001,Xlen = 5。又如,第二操作數(shù)Y的值為13,轉(zhuǎn)換成二進制數(shù)為Y = 1101,Ylen = 4。
[0038] 在具體實施中,可W根據(jù)實際的應用場景初始化第一變量R和第二變量S。在本發(fā) 明一實施例中,初始化第一變量R = 0,第二變量S = 1。
[0039] 步驟 S102,當 Xlen > Ylen 時,計算 X 模 Y。
[0040] 在本發(fā)明實施例中,可W先對第一操作數(shù)對應的Xlen與第二操作數(shù)對應的Ylen 進行比較。在Xlen > Ylen時,根據(jù)第一操作數(shù)X的符號位,執(zhí)行對應的操作,包括:
[OOW 1)在X為正數(shù)時,即X的符號位為0時,將X左移N1位至最高位為1,X的低位補 N1位無效0 ;將左移后的X與Y高位對齊相減,將得到的差值的后N1位去除,得到的結果作 為更新后的X ;將第一變量R與左移狂len-Ylen)位的第二變量S低位對齊相加,并將得到 的和值作為更新后的第一變量R。在本發(fā)明實施例中,需要注意的是,在N1大于Xlen-Ylen 時,X左移N1位后的值小于Y,X模Y計算結束,若X = 0,計算結束,若X〉0,進行Y模X計 算。
[0042] 例如,X = ΟΟΟΙΟΟΟΙ,Υ = ΙΟΟΟ,Χ的符號位為0。將X左移N1 = 3位,低位補3位 無效0,則左移后的X = 10001000。在本發(fā)明實施例中,X在左移時低位補充的0是無效0, 實質(zhì)上并沒有參與X的運算,即實質(zhì)上X對應的二進制位長xien = 5。
[0043] 將左移后的X與Y高位對齊做減法,在本發(fā)明實施例中,高位對齊運算是指:數(shù)A 的位長為M,數(shù)B的位長為N,Μ > N,將數(shù)A和數(shù)B進行高位對齊運算,是指將數(shù)B的低位補 (M-N)個0后進行的運算。
[0044] 即:
[0045]
[0046] 即得到的差值為00001000,將得到的差值的后3位去除,得到的值為00001,作為 更新后的X值,即更新后的X = 00001。
[0047] 初始化的第一變量R = 0,第二變量S = 1,第二變量S左移1位后,第二變量S更 新為S = 10,將第一變量R與左移后的第二變量S低位對齊并相加,得到0+10 = 10,即為 更新后的第一變量R= 10。 W48]。在X為負數(shù)時,即X的符號位為1時,將X左移N2位,X的低位補N2位無效0 ; 將左移后的X與Y高位對齊相加,將得到的和值的后N2位去除,得到的結果作為更新后的 X ;將第一變量R與左移狂len-Ylen)位的第二變量S低位對齊相減,并將得到的和值作為 更新后的第一變量R。其中,肥為:X最高位的0前的符號位的個數(shù)N3與狂len-Ylen)之 間的最小值。 W例例如,X =-10111,Y = 1101,X的符號位為1。將X左移N2 = 1位,低位補1位 無效零,則左移后的X = -01110??蒞理解的是,左移后的X中,后1位的0為無效0,即實 質(zhì)上X對應的二進制位長為Xlen = 4。將左移后的X與Y高位對齊做加法,即: 陽化0]
[0051] 即得到的和值為01000,將得到的和值的后1位去除,得到的值為0100,作為更新 后的X值,即更新后的X = 0100。
[0052] 當前步驟第一變量R= 110,第二變量S = 1,第二變量S左移1位后,更新為S = 10。將第一變量R與左移后的第二變量S低位對齊相減,得到的差值為110-10 = 100,即更 新后的第一變量R = 100。
[0053] 步驟S103,當Xlen《Ylen時,計算Y模X。
[0054] 1)在Y為正數(shù)時,將Y左移Ml位至最高位為1,低位補Ml位無效0,將左移后的Y與 X高位對齊相減,將差值的后Ml位去除,作為更新后的Y ;將第二變量S與左移燈len-xien) 位的第一變量R低位對齊相加,并將得到的和值作為更新后的第二變量S。 陽05引。在Y為負數(shù)時,將Y左移M2化低位補M2位無效0,將左移后的Y與X高位對 齊相加,將得到的和值的后M2位去除,作為更新后的Y ;將第二變量S與左移(Ylen-Xlen) 位的第一變量R低位對齊相減,得到的差值作為更新后的第二變量S ;其中,M2為:Y最高位 的0前的符號位的個數(shù)M3與(Ylen-Xlen)之間的最小值。
[0056] 在本發(fā)明實施例中,步驟S103的運算過程可W參見步驟S102,將步驟S102中的X 替換成Y,Y替換成X,R替換成S,S替換成R后,即可W為步驟S103中的運算過程。
[0057] 在本發(fā)明實施例中,在模逆運算的計算過程中,可W重復執(zhí)行步驟S102~步驟 S103,即:在X更新后,將更新后的X對應的Xlen與Ylen進行再次比較,并根據(jù)比較結果, 執(zhí)行步驟S102或步驟S103 ;或在Y更新完成后,將更新后的Y對應的Ylen與Xlen進行再 次比較,并根據(jù)比較結果,執(zhí)行步驟S102或步驟S103。
[0058] 重復執(zhí)行步驟S102或步驟S103,直至更新后的X和更新后的Y中,存在一個數(shù)為 0時,停止模逆運算。例如,在檢測到x = o時,終止模逆運算。并根據(jù)當前Y的值,來確定 模逆運算的結果。
[0059] 在本發(fā)明一實施例中,在更新后的X = 0且更新后的Y = 1時,模逆運算的結果為 更新后的第二變量S ;在更新后的X = 1且更新后的Y = 0時,模逆運算的結果為X的初始 值與更新后的第一變量R之差;在更新后的X與更新后的Y其中之一為0且另一不等于1 時,判定模逆運算的結果不存在。
[0060] 下面W X值為17、Y值為13為例,對本發(fā)明上述實施例中提供的模逆運算方法進 行說明。
[0061] 計算 Z = 13 imodl7。 陽06引分別將X和Y W二進制數(shù)表示,則X= 10001,Υ= 1101。設定第一變量R = 0,第 二變量S = 1。從上述內(nèi)容可知,X對應的Xlen = 5, Y對應的Ylen = 4。
[0063] Xlen > Ylen,且XIen-Ylen = 1,X為正數(shù)且X的第一位為1,則不將X左移,即X 左移的位數(shù)為0。將X與Y高位對齊相減,將得到的差值作為更新后的X,即更新后的X = 10001-11010 = -10111。
[0064] 第一變量R與左移1位的第二變量S相加,將得到的和值作為更新后的R,即更新 后的R = 10。 陽0化]更新后的X = -10111為負數(shù),將X左移N2位,N2為X最高位的0前的符號位的個 數(shù)N3與狂len-Ylen)之間的最小值。X最高位的0前的符號位的個數(shù)N3 = 1,狂len-Ylen) =1,因此N2 = 1,即將X左移1位,低位補1位無效0,則左移后的X = -01110,由于最低 位的0為無效0,則左移后的X對應的Xlen = 4。
[0066] 更新后的X對應的Xlen與Ylen相等,Xlen-Ylen = 0。將Y與X相加,得到的和 值為-01110+11010 = 01000。將和值結果的最后1位去除,作為更新后的X,即更新后的X = 0100。
[0067] 第一變量R與左移0位的第二變量S相減,并將得到的差值作為更新后的R,即更 新后的R = 10-1 = 1。 W側 Y = 1101,更新后的X = 0100, X的束一位為化號位,因此X = 100。由于XIen不 包括X的符號位,因此Xlen = 3,即Ylen大于更新后的X對應的Xlen,Ylen-Xlen = 1。Y 為整數(shù)且Υ的第一位為1,Υ不左移。將Υ與X高位對齊相減,將得到的差值作為更新后的 Υ,即更新后的 Υ = 1101-1000 = 0101。 W例將更新后的R左移1位,并與第二變量S相加,得到更新后的第二變量S = 1+10 = 11。
[0070] 將更新后的Υ最高位為0,Υ為整數(shù),將Υ左移1位至最高位為1,低位補1位無效 0,左移后的Υ = 1010。由于左移后的Υ的最低位的0為無效0,則Υ對應的Ylen = 3,X = 100,對應的 Xlen = 3,即 Xlen = Ylen。 陽071] 將Y與X高位對齊相減,得到的差值為1010-1000 = 10,將差值的最低位的0去 除,得到的值為1,即更新后的Υ= 1。將更新后的第二變量S與更新后的第一變量R相加, S = 11,R = 1,得到更新后的第二變量S = 11+1 = 100。
[0072] 更新后的Υ = 1,X = 100,即X對應的位長Xlen = 3, Υ對應的位長Ylen = 1, Xlen-Ylen = 2。將X與Y高位對齊相減,得到的差值為100-100 = 0,即為更新后的X值。 將第一變量R與左移2位的第二變量S相加,得到的和值為更新后的第一變量R = 1+10000 =10001。
[0073] 此時,更新后的X = 0,更新后的Υ= 1,模逆運算結束。
[0074] 從上述內(nèi)容中可知,在更新后的X = 0且更新后的Υ = 1時,模逆運算的結果為更 新后的第二變量S。第二變量S = 100,轉(zhuǎn)換成十進制數(shù)為4。即13 imodlT = 4。
[007引代入驗證:13X4 = 52,對17求模得到的結果為1,即本發(fā)明上述實施例提供的模 逆運算方法求得的結果正確。
[0076] 由此可見,在第一操作數(shù)X位長大于第二操作數(shù)Y時,X左移時可W消除冗余的符 號位,通過變量Xlen記錄X的實時位長,X的權值沒有發(fā)生變化。R和S的運算遵循低位對 齊的運算方法,R無左移操作,即R的權值也沒有發(fā)生改變。類似的,在Y位長大于X時,Y 左移時可W消除冗余的符號位,通過變量Ylen記錄Y的實時位長,Y的權值沒有發(fā)生變化。 R和S的運算遵循低位對齊的運算方法,S無左移操作,即S的權值也沒有發(fā)生改變。即在 整個模逆運算過程中,運算的結果不包括權重因子,相比于現(xiàn)有的二進制擴展歐幾里得算 法,不需要再對運算結果進行權重因子的消除操作,并且可W不限定模必須為奇數(shù),可W實 現(xiàn)對任意非零整數(shù)求模。
[0077] 本發(fā)明實施例還提供了一種模逆運算器,用于計算Z = Y imod X,其中Z為所述模 逆運算的結果,X為第一操作數(shù),Y為第二操作數(shù),參照圖2,包括:控制器201、移位器202、 加減法運算器203 W及存儲器204,其中:
[0078] 存儲器204中,存儲有第一操作數(shù)X、第二操作數(shù)Y、第一變量R W及第二變量S。
[0079] 控制器201,適于保存并更新所述第一操作數(shù)X對應的二進制位長Xlen W及符號 位Xsign、所述第二操作數(shù)Y對應的二進制位長Ylen W及符號位Ysign,控制所述移位器 202 W及所述加減法運算器203實現(xiàn)X模Υ W及Υ模X,包括:
[0080] 在Xlen > Ylen,且Xsign = 0時,控制所述移位器202將X左移Ν1位至最高位 為1,低位補N1位無效0,控制所述移位器202將所述第二變量S左移狂len-Ylen)位;控 制所述加減法運算器203將左移后的X與Y高位對齊相減,將差值的后N1位去除作為更新 后的X并保存,將第一變量R與左移后的第二變量S低位對齊并相加,得到的和值作為更新 后的第一變量R。
[0081] 在本發(fā)明實施例中,在進行模逆運算時,控制器201從存儲器204中讀取X和Y,將 X送入移位器202。移位器202將X左移N1位至最高位為1,移位后X位長多出Y的低位 結果直接寫入到存儲器204,與Y位長相等的高位結果送入至加減法運算器203。加減法運 算器203將X的高位部分與Y相減,并將運算結果寫入至存儲器204。在加減法運算器203 進行減法運算的過程中出現(xiàn)借位時,X的符號位取反,否則X的符號位不變。將高位運算的 結果與移出的低位結合,并去除低位中的后N1位,作為更新后的X。
[0082] 例如,X = 00011001,Y = 1000。將X送入至移位器202,將X左移3位至最高位 為1,移位后X = 11001000,移位后的X位長多出Y的低位結果為1000,將1000寫入到存 儲器204中。與Y位長相等的X的高位結果為1100,將1100送入至加減法運算器203與Y 相減,得到的運算結果為0100,將運算結果寫入至存儲器203。將高位運算的結果與移出的 低位結合,得到的值為01001000,去除01001000的后3位,得到的值為01001即為更新后的 X。
[0083] 在本發(fā)明一實施例中,控制器201從存儲器204中讀取第一變量R和第二變量S, 將第二變量S送入至移位器202。移位器202將第二變量S左移N1位,加減法運算器203 將第一變量R與左移后的第二變量低位對齊相加,得到的和值作為更新后的第一變量R。
[0084] 可W理解的是,在本發(fā)明實施例中,第一變量R的計算與更新還可W存在其他的 實現(xiàn)方法。
[00化]在本發(fā)明另一實施例中,在計算X模Y的過程中,預先設置第Ξ變量QS,第Ξ變量 QS存儲在存儲器204中,且第Ξ變量QS的初始值為0。在每次X左移N1位與Y高位對齊 相減之后,從存儲器204中讀取第Ξ變量QS W及第二變量S。將第Ξ變量QS送入至移位 器202中左移N1位,將移位結果送入至加減法運算器203。加減法運算器203將左移后的 第=變量QS與第二變量S低位對齊并相加,得到的和值作為更新后的第Ξ變量QS。在X模 Y計算結束時,從存儲器204中讀取第一變量R和更新后的第Ξ變量QS,送入至加減法運算 器203中,將第一變量R與更新后的第Ξ變量QS低位對齊相加,得到的和值作為更新后的 第一變量R。
[0086] 在Xlen > Ylen,且Xsign = 1時,控制所述移位器將X左移N2位,低位補N2位無 效0,控制所述移位器將所述第二變量S左移狂len-Ylen)位;控制所述加減法運算器將左 移后的X與Y高位對齊相加,將和值的后N2位去除作為更新后的X并保存,將第一變量R 與左移后的第二變量S低位對齊并相減,得到的差值作為更新后的第一變量R,其中,N2為: X最高位的0前的符號位的個數(shù)N3與狂len-Ylen)之間的最小值。
[0087] 在本發(fā)明實施例中,在Xsign = 1,即X為負數(shù)時,移位器202將X左移N2位至最 高位為1,移位后X位長多出Y的低位結果直接寫入到存儲器204,與Y位長相等的高位結 果輸入至加減法運算器203。加減法運算器203將X的高位部分與Y相加,并將運算結果 寫入至存儲器204。在加減法運算器203進行減法運算的過程中出現(xiàn)進位時,X的符號位取 反,否則X的符號位不變。將高位運算的結果與移出的低位結合,并取出低位中的后N2位, 作為更新后的X。 陽0蝴例如,Χ = -10111,Υ= IIOIdX最高位的0前的符號位的個數(shù)N3 = 1,狂len-Ylen) =1,因此N2= 1。將X送入至移位器202,將X左移1位,移位后Χ = 01110,移位后的X位 長多出Υ的低位結果為0,將0寫入到存儲器204中。與Υ位長相等的X的高位結果為-0111, 將0111送入至加減法器203與Υ相加,在相加的過程中產(chǎn)生了進位,X符號位取反,得到的 高位運算的結果為0100,將高位運算的結果與移出的低位結合,得到的值為01000,去除低 位中的后1位0,得到的值作為更新后的X,即更新后的X = 0100。
[0089] 在本發(fā)明一實施例中,控制器201從存儲器204中讀取第一變量R和第二變量S, 將第二變量S送入至移位器202。移位器202將第二變量S左移狂len-Ylen)位,加減法運 算器203將第一變量R與左移后的第二變量S低位對齊相減,得到的差值作為更新后的第 一變量R。
[0090] 在本發(fā)明另一實施例中,在計算X模Y的過程中,預先設置第Ξ變量QS,第Ξ變量 QS存儲在存儲器204中,且第Ξ變量QS的初始值為0。在每次X左移N1位與Y高位對齊 相加之后,從存儲器204中讀取第Ξ變量QS W及第二變量S。將第Ξ變量QS送入至移位 器202中左移N1位,將移位結果送入至加減法運算器203。加減法運算器203將左移后的 第=變量QS與第二變量S低位對齊并相減,得到的差值作為更新后的第Ξ變量QS。在X模 Y計算結束時,從存儲器204中讀取第一變量R和更新后的第Ξ變量QS,送入至加減法運算 器203中,將第一變量R與更新后的第Ξ變量QS低位對齊相減,得到的差值作為更新后的 第一變量R。
[0091] 在Xlen《Ylen,且Ysign = 0時,控制所述移位器將Y左移Ml位至最高位為1, 低位補Ml位無效0,控制所述移位器將所述第一變量R左移(Ylen-Xlen)位;控制所述加減 法運算器將左移后的Y與X高位對齊相減,將差值的后N1位去除作為更新后的Y并保存, 將第二變量S與左移后的第一變量R低位對齊并相加,得到的和值作為更新后的第二變量 S。
[0092] 在Xlen《Ylen,且Ysign = 1時,控制所述移位器將Y左移M2位,低位補M2位無 效0,控制所述移位器將所述第一變量R左移(Ylen-Xlen)位;控制所述加減法運算器將左 移后的Y與X高位對齊相加,將和值的后M2位去除作為更新后的Y并保存,將第二變量S 與左移后的第一變量R低位對齊并相減,得到的差值作為更新后的第二變量S,其中,M2為: Y最高位的0前的符號位的個數(shù)M3與燈len-Xlen)之間的最小值。
[0093] 在本發(fā)明實施例中,在Xlen《Ylen時,模逆運算的過程可W參照本發(fā)明上述實施 例中提供的Xlen > Ylen時的過程,此處不做寶述。
[0094] 在本發(fā)明實施例中,可W通過控制器201控制移位器202和加減法運算器203循 環(huán)執(zhí)行上述操作,直至得到更新后的X和更新后的Y中的一個值為0時,結束模逆運算。 陽0巧]在所述控制器得到的更新后的X = 0且更新后的Y = 1時,所述模逆運算的結果 為更新后的S ;在更新后的X = 1且更新后的Y = 0時,所述模逆運算的結果為X的初始值 與更新后的R之差;在更新后的X與更新后的Y其中之一等于0而另一個不等于1時,說明 X和Y不互素,所述模逆運算的結果不存在。
[0096] 本領域普通技術人員可W理解上述實施例的各種方法中的全部或部分步驟是可 W通過程序來指示相關的硬件來完成,該程序可W存儲于一計算機可讀存儲介質(zhì)中,存儲 介質(zhì)可W包括:ROM、RAM、磁盤或光盤等。
[0097] 雖然本發(fā)明披露如上,但本發(fā)明并非限定于此。任何本領域技術人員,在不脫離本 發(fā)明的精神和范圍內(nèi),均可作各種更動與修改,因此本發(fā)明的保護范圍應當W權利要求所 限定的范圍為準。
【主權項】
1. 一種模逆運算方法,用于計算z = Y kodX,其中Z為所述模逆運算的結果,X為第一 操作數(shù),Y為第二操作數(shù),其特征在于,包括: 獲取第一操作數(shù)X的二進制位長xien以及第二操作數(shù)Y的二進制位長Hen ;初始化 第一變量R與第二變量S ; 當XIen彡Hen時,計算X模Y : 在X為正數(shù)時,將X左移N1位至最高位為1,低位補N1位無效0,將左移后的X與Y高 位對齊相減,將差值的后N1位去除,作為更新后的X,將第一變量R與左移OClen-Ylen)位 的第二變量S低位對齊相加之和作為更新后的第一變量R ; 在X為負數(shù)時,將X左移N2位,低位補N2位無效0,將左移后的X與Y高位對齊相加, 將和值的后N2位去除,作為更新后的X,將第一變量R與左移OClen-Ylen)位的第二變量S 低位對齊并相減,得到的差值作為更新后的第一變量R,其中,N2為:X最高位的0前的符號 位的個數(shù)N3與(Xlen-Ylen)之間的最小值; 當Xlen < Hen時,計算Y模X : 在Y為正數(shù)時,將Y左移Ml位至最高位為1,低位補Ml位無效0,將左移后的Y與X高 位對齊相減,將差值的后Ml位去除,作為更新后的Y ;將第二變量S與左移(Ylen-Xlen)位 的第一變量R低位對齊相加之和作為更新后的第二變量S ; 在Y為負數(shù)時,將Y左移M2位,低位補M2位無效0,將左移后的Y與X高位對齊相加, 將和值的后M2位去除,作為更新后的Y ;將第二變量S與左移(Hen-Xlen)位的第一變量 R低位對齊并相減,得到的差值作為更新后的第二變量S,其中,M2為:Y最高位的0前的符 號位的個數(shù)M3與(Ylen-Xlen)之間的最小值; 在更新后的X = 〇且更新后的Y = 1時,所述模逆運算的結果為更新后的第二變量S ; 在更新后的X = 1且更新后的Y = 〇時,所述模逆運算的結果為X的初始值與更新后的第 一變量R之差;在更新后的X與更新后的Y其中之一等于0而另一個不等于1時,所述模逆 運算的結果不存在。2. -種模逆運算器,用于計算Z = Y bod X,其中Z為所述模逆運算的結果,X為第一 操作數(shù),Y為第二操作數(shù),其特征在于,包括:控制器、移位器、加減法運算器以及存儲器,其 中: 所述存儲器,適于存儲第一操作數(shù)X、第二操作數(shù)Y、第一變量R以及第二變量S ; 所述控制器,適于保存并更新所述第一操作數(shù)X對應的二進制位長)(len以及符號位 Xsign、所述第二操作數(shù)Y對應的二進制位長Hen以及符號位Ysign,控制所述移位器以及 所述加減法運算器實現(xiàn)X模Y以及Y模X,包括: 在)(len多Ylen,且Xsign = 0時,控制所述移位器將X左移N1位至最高位為1,低位 補N1位無效0,控制所述移位器將所述第二變量S左移(Xlen-Ylen)位;控制所述加減法 運算器將左移后的X與Y高位對齊相減,將差值的后N1位去除作為更新后的X并保存,將 第一變量R與左移后的第二變量S低位對齊并相加,得到的和值作為更新后的第一變量R ; 在)(len多Ylen,且Xsign = 1時,控制所述移位器將X左移N2位,低位補N2位無效 〇,控制所述移位器將所述第二變量S左移(Xlen-Ylen)位;控制所述加減法運算器將左移 后的X與Y高位對齊相加,將和值的后N2位去除作為更新后的X并保存,將第一變量R與 左移后的第二變量S低位對齊并相減,得到的差值作為更新后的第一變量R ;其中,N2為:X 最高位的0前的符號位的個數(shù)N3與(Xlen-Ylen)之間的最小值; 在)(len < Ylen,且Ysign = 0時,控制所述移位器將Y左移Ml位至最高位為1,低位 補Ml位無效0,控制所述移位器將所述第一變量R左移(Ylen-Xlen)位;控制所述加減法 運算器將左移后的Y與X高位對齊相減,將差值的后N1位去除作為更新后的Y并保存,將 第二變量S與左移后的第一變量R低位對齊并相加,得到的和值作為更新后的第二變量S ; 在)(len < Ylen,且Ysign = 1時,控制所述移位器將Y左移M2位,低位補M2位無效 〇,控制所述移位器將所述第一變量R左移(Ylen-Xlen)位;控制所述加減法運算器將左移 后的Y與X高位對齊相加,將和值的后M2位去除作為更新后的Y并保存,將第二變量S與 左移后的第一變量R低位對齊并相減,得到的差值作為更新后的第二變量S ;其中,M2為:Y 最高位的〇前的符號位的個數(shù)M3與(Ylen-Xlen)之間的最小值; 在所述控制器得到的更新后的X = 〇且更新后的Y = 1時,所述模逆運算的結果為更 新后的S ;在更新后的X = 1且更新后的Y = 0時,所述模逆運算的結果為X的初始值與更 新后的R之差;在更新后的X與更新后的Y其中之一等于0而另一個不等于1時,所述模逆 運算的結果不存在。
【文檔編號】G06F7/72GK105988772SQ201510096948
【公開日】2016年10月5日
【申請日】2015年3月4日
【發(fā)明人】劉凱, 陸繼承, 趙曉冬, 王宇
【申請人】上海復旦微電子集團股份有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
饶河县| 高唐县| 罗源县| 赤壁市| 二连浩特市| 怀化市| 乌拉特前旗| 乌拉特中旗| 钟祥市| 攀枝花市| 宽甸| 陵川县| 高碑店市| 个旧市| 甘洛县| 金寨县| 靖安县| 巍山| 修文县| 延川县| 逊克县| 乌兰县| 孟连| 榆中县| 三原县| 屯昌县| 德惠市| 邓州市| 苏州市| 景东| 抚远县| 民勤县| 阿拉善盟| 大厂| 福清市| 淄博市| 常熟市| 乌苏市| 武鸣县| 广饶县| 荔波县|