模逆運(yùn)算方法及運(yùn)算器的制造方法
【專利摘要】一種模逆運(yùn)算方法及運(yùn)算器,用于計(jì)算Z=Y(jié)-1mod X,其中Z為所述模逆運(yùn)算的結(jié)果,X為第一操作數(shù),Y為第二操作數(shù),所述模逆運(yùn)算方法包括:計(jì)算獲取第一操作數(shù)X的二進(jìn)制位長Xlen以及第二操作數(shù)Y的二進(jìn)制位長Ylen;初始化第一變量R與第二變量S;當(dāng)Xlen≥Ylen時(shí),計(jì)算X模Y,當(dāng)Xlen≤Ylen時(shí),計(jì)算Y模X。在更新后的X=0且更新后的Y=1時(shí),所述模逆運(yùn)算的結(jié)果為更新后的第二變量S;在更新后的X=1且更新后的Y=0時(shí),所述模逆運(yùn)算的結(jié)果為X的初始值與更新后的第一變量R之差;在更新后的X與更新后的Y其中之一等于0而另一個(gè)不等于1時(shí),所述模逆運(yùn)算的結(jié)果不存在。采用所述方法及運(yùn)算器,可實(shí)現(xiàn)模為任意非零整數(shù)的模逆運(yùn)算,提高模逆運(yùn)算的計(jì)算效率,降低硬件功耗。
【專利說明】
模逆運(yùn)算方法及運(yùn)算器
技術(shù)領(lǐng)域
[0001] 本發(fā)明設(shè)及信息安全領(lǐng)域,尤其設(shè)及一種模逆運(yùn)算方法及運(yùn)算器。
【背景技術(shù)】
[0002] 模逆運(yùn)算廣泛應(yīng)用在公鑰密碼體制中,例如,在RSA算法中的解密密鑰生成時(shí)應(yīng) 用到模逆運(yùn)算,模逆運(yùn)算也可W用于楠圓曲線密碼算法中的點(diǎn)加和倍點(diǎn)運(yùn)算。
[0003] 目前,求解模逆運(yùn)算的方法主要包括模幕算法、擴(kuò)展歐幾里得算法、二進(jìn)制擴(kuò)展歐 幾里得算法等。
[0004] 模幕算法W費(fèi)馬小定理為基礎(chǔ),將模逆運(yùn)算轉(zhuǎn)換成模幕運(yùn)算,但是模幕算法無法 確定模逆結(jié)果是否存在。采用模乘器作為硬件運(yùn)算單元,較為復(fù)雜且功耗較大。 陽0化]擴(kuò)展歐幾里得算法通過無轉(zhuǎn)相除計(jì)算最大公因子求解模逆,當(dāng)最大公因子為非1 整數(shù)時(shí)無法獲取模逆的計(jì)算結(jié)果。采用除法器作為硬件運(yùn)算單元,實(shí)現(xiàn)仍較為復(fù)雜。
[0006] 二進(jìn)制擴(kuò)展歐幾里得算法將除法轉(zhuǎn)換成移位和加減法,但是,在移位的過程中,操 作數(shù)的權(quán)值發(fā)生了改變,最終運(yùn)算結(jié)果中包含有2"(η為操作數(shù)的位長)項(xiàng)權(quán)重因子,去除 權(quán)重因子需進(jìn)行多次除2的操作,因此,要求模必須是奇數(shù)。
[0007] 現(xiàn)有的二進(jìn)制擴(kuò)展歐幾里得算法方法在進(jìn)行模逆運(yùn)算時(shí)仍存在一定的限制,無法 針對(duì)任意非零整數(shù)求模,并且計(jì)算過程較為復(fù)雜。
【發(fā)明內(nèi)容】
[0008] 本發(fā)明實(shí)施例解決的問題是如何實(shí)現(xiàn)對(duì)任意非零整數(shù)求模,并提高模逆運(yùn)算的計(jì) 算效率,降低硬件功耗。
[0009] 為解決上述問題,本發(fā)明實(shí)施例提供一種模逆運(yùn)算方法,用于計(jì)算Ζ = Υ imodX,其 中Z為所述模逆運(yùn)算的結(jié)果,X為第一操作數(shù),Y為第二操作數(shù),包括:
[0010] 獲取第一操作數(shù)X的二進(jìn)制位長xien W及第二操作數(shù)Y的二進(jìn)制位長Ylen ;初 始化第一變量R與第二變量S ; W11]當(dāng) Xlen > Ylen 時(shí),計(jì)算 X 模 Y :
[0012] 在X為正數(shù)時(shí),將X左移N1位至最高位為1,低位補(bǔ)N1位無效0,將左移后的X與 Y高位對(duì)齊相減,將差值的后N1位去除,作為更新后的X,將第一變量R與左移狂len-Ylen) 位的第二變量S低位對(duì)齊相加之和作為更新后的第一變量R ; 陽01引在X為負(fù)數(shù)時(shí),將X左移N2化低位補(bǔ)N2位無效0,將左移后的X與Y高位對(duì)齊相 加,將和值的后N2位去除,作為更新后的X,將第一變量R與左移狂len-Ylen)位的第二變 量S低位對(duì)齊并相減,得到的差值作為更新后的第一變量R ;其中,N2為:X最高位的0前的 符號(hào)位的個(gè)數(shù)N3與狂len-Ylen)之間的最小值;
[0014] 當(dāng)Xlen《Ylen時(shí),計(jì)算Y模X:
[0015] 在Y為正數(shù)時(shí),將Y左移Ml位至最高位為1,低位補(bǔ)Ml位無效0,將左移后的Y與 X高位對(duì)齊相減,將差值的后Ml位去除,作為更新后的Y ;將第二變量S與左移燈len-xien) 位的第一變量R低位對(duì)齊相加之和作為更新后的第二變量S ;
[0016] 在Y為負(fù)數(shù)時(shí),將Y左移M2位,低位補(bǔ)M2位無效0,將左移后的Y與X高位對(duì)齊相 加,將和值的后M2位去除,作為更新后的Y ;將第二變量S與左移燈len-Xlen)位的第一變 量R低位對(duì)齊并相減,得到的差值作為更新后的第二變量S ;其中,M2為:Y最高位的0前的 符號(hào)位的個(gè)數(shù)M3與(Ylen-Xlen)之間的最小值;
[0017] 在更新后的X = 0且更新后的Y = 1時(shí),所述模逆運(yùn)算的結(jié)果為更新后的第二變 量S ;在更新后的X = 1且更新后的Y = 0時(shí),所述模逆運(yùn)算的結(jié)果為X的初始值與更新后 的第一變量R之差;在更新后的X與更新后的Y其中之一等于0而另一個(gè)不等于1時(shí),所述 模逆運(yùn)算的結(jié)果不存在。
[0018] 本發(fā)明實(shí)施例還提供了一種模逆運(yùn)算器,用于計(jì)算Z = Y imod X,其中Z為所述模 逆運(yùn)算的結(jié)果,X為第一操作數(shù),Y為第二操作數(shù),包括:控制器、移位器、加減法運(yùn)算器W及 存儲(chǔ)器,其中:
[0019] 獲取第一操作數(shù)X和第二操作數(shù)Y,W及第一操作數(shù)X的二進(jìn)制位長Xlen、第二操 作數(shù)Y的二進(jìn)制位長Ylen ;初始化第一變量R與第二變量S ;
[0020] 當(dāng) Xlen > Ylen 時(shí),計(jì)算 X 模 Y :
[0021] 在X為正數(shù)時(shí),將X左移N1位至最高位為1,低位補(bǔ)N1位無效0,將左移后的X與 Y高位對(duì)齊相減,將差值的后N1位去除,作為更新后的X,將第一變量R與左移狂len-Ylen) 位的第二變量S低位對(duì)齊相加之和作為更新后的第一變量R ; 陽02引在X為負(fù)數(shù)時(shí),將X左移N2化低位補(bǔ)N2位無效0,將左移后的X與Y高位對(duì)齊相 加,將和值的后N2位去除,作為更新后的X,將第一變量R與左移狂len-Ylen)位的第二變 量S低位對(duì)齊并相減,得到的差值作為更新后的第一變量R ;其中,N2為:X最高位的0前的 符號(hào)位的個(gè)數(shù)N3與狂len-Ylen)之間的最小值;
[0023] 當(dāng)Xlen《Ylen時(shí),計(jì)算Y模X :
[0024] 在Y為正數(shù)時(shí),將Y左移Ml位至最高位為1,低位補(bǔ)Ml位無效0,將左移后的Y與 X高位對(duì)齊相減,將差值的后Ml位去除,作為更新后的Y ;將第二變量S與左移燈len-Xlen) 位的第一變量R低位對(duì)齊相加之和作為更新后的第二變量S ; 陽02引在Y為負(fù)數(shù)時(shí),將Y左移M2化低位補(bǔ)M2位無效0,將左移后的Y與X高位對(duì)齊相 加,將和值的后M2位去除,作為更新后的Y ;將第二變量S與左移燈len-Xlen)位的第一變 量R低位對(duì)齊并相減,得到的差值作為更新后的第二變量S ;其中,M2為:Y最高位的0前的 符號(hào)位的個(gè)數(shù)M3與燈len-Xlen)之間的最小值;
[00%] 在更新后的X = 0且更新后的Y = 1時(shí),所述模逆運(yùn)算的結(jié)果為更新后的第二變 量S ;在更新后的X = 1且更新后的Y = 0時(shí),所述模逆運(yùn)算的結(jié)果為X的初始值與更新后 的第一變量R之差;在更新后的X與更新后的Y其中之一等于0而另一個(gè)不等于1時(shí),所述 模逆運(yùn)算的結(jié)果不存在。
[0027] 與現(xiàn)有技術(shù)相比,本發(fā)明實(shí)施例的技術(shù)方案具有W下優(yōu)點(diǎn):
[0028] 在第一操作數(shù)X位長大于第二操作數(shù)Y時(shí),X左移時(shí)可W消除冗余的符號(hào)位,通過 變量Xlen記錄X的實(shí)時(shí)位長,X的權(quán)值沒有發(fā)生變化。R和S的運(yùn)算遵循低位對(duì)齊的運(yùn)算 方法,R無左移操作,即R的權(quán)值也沒有發(fā)生改變。類似的,在Y位長大于X時(shí),Y左移時(shí)可 W消除冗余的符號(hào)位,通過變量Ylen記錄Y的實(shí)時(shí)位長,Y的權(quán)值沒有發(fā)生變化。R和S的 運(yùn)算遵循低位對(duì)齊的運(yùn)算方法,s無左移操作,即s的權(quán)值也沒有發(fā)生改變。即在整個(gè)模逆 運(yùn)算過程中,運(yùn)算的結(jié)果不包括權(quán)重因子,相比于現(xiàn)有的二進(jìn)制擴(kuò)展歐幾里得算法,不需要 再對(duì)運(yùn)算結(jié)果進(jìn)行權(quán)重因子的消除操作,并且可W不限定模必須為奇數(shù),可W實(shí)現(xiàn)模為任 意非零整數(shù)的模逆運(yùn)算,并提高模逆運(yùn)算的計(jì)算效率,降低硬件功耗。
【附圖說明】
[0029] 圖1是本發(fā)明實(shí)施例中的一種模逆運(yùn)算方法的流程圖;
[0030] 圖2是本發(fā)明實(shí)施例中的一種模逆運(yùn)算器的結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0031] 現(xiàn)有的二進(jìn)制擴(kuò)展歐幾里得算法將除法轉(zhuǎn)換成移位和加減法,但是,在移位的過 程中,操作數(shù)的權(quán)值發(fā)生了改變,最終運(yùn)算結(jié)果中包含有2"(η為操作數(shù)的位長)項(xiàng)權(quán)重因 子,去除權(quán)重因子需進(jìn)行多次除2的操作,因此,要求模必須是奇數(shù)。但是,現(xiàn)有的二進(jìn)制擴(kuò) 展歐幾里得算法方法在進(jìn)行模逆運(yùn)算時(shí)仍存在一定的限制,無法針對(duì)任意非零整數(shù)求模, 并且計(jì)算過程較為復(fù)雜。
[0032] 在本發(fā)明實(shí)施例中,在第一操作數(shù)X位長大于第二操作數(shù)Υ時(shí),X左移時(shí)可W消除 冗余的符號(hào)位,通過變量Xlen記錄X的實(shí)時(shí)位長,X的權(quán)值沒有發(fā)生變化。R和S的運(yùn)算遵 循低位對(duì)齊的運(yùn)算方法,R無左移操作,即R的權(quán)值也沒有發(fā)生改變。類似的,在Y位長大 于X時(shí),Y左移時(shí)可W消除冗余的符號(hào)位,通過變量Ylen記錄Y的實(shí)時(shí)位長,Y的權(quán)值沒有 發(fā)生變化。R和S的運(yùn)算遵循低位對(duì)齊的運(yùn)算方法,S無左移操作,即S的權(quán)值也沒有發(fā)生 改變。在整個(gè)模逆運(yùn)算過程中,運(yùn)算的結(jié)果不包括權(quán)重因子,相比于現(xiàn)有的二進(jìn)制擴(kuò)展歐幾 里得算法,不需要再對(duì)運(yùn)算結(jié)果進(jìn)行權(quán)重因子的消除操作,并且可W不限定模必須為奇數(shù), 可W實(shí)現(xiàn)對(duì)任意非零整數(shù)求模。
[0033] 為使本發(fā)明實(shí)施例的上述目的、特征和優(yōu)點(diǎn)能夠更為明顯易懂,下面結(jié)合附圖對(duì) 本發(fā)明的具體實(shí)施例做詳細(xì)的說明。
[0034] 本發(fā)明實(shí)施例提供了一種模逆運(yùn)算方法,用于計(jì)算Z = Y imodX,其中Z為所述模 逆運(yùn)算的結(jié)果,X為第一操作數(shù),Y為第二操作數(shù),參照?qǐng)D1,W下通過具體步驟對(duì)本發(fā)明實(shí) 施例提供的模逆運(yùn)算方法進(jìn)行詳細(xì)說明。
[0035] 步驟S101,獲取第一操作數(shù)X的二進(jìn)制位長Xlen W及第二操作數(shù)Y的二進(jìn)制位長 Ylen,初始化第一變量R與第二變量S。
[0036] 在具體實(shí)施中,第一操作數(shù)X和第二操作數(shù)Y均為非0的正整數(shù)。在獲取到第一 操作數(shù)X和第二操作數(shù)Y之后,將第一操作數(shù)X和第二操作數(shù)Y依次進(jìn)行二進(jìn)制轉(zhuǎn)換,從而 可W分別獲取第一操作數(shù)X對(duì)應(yīng)的初始二進(jìn)制位長xien,W及第二操作數(shù)Y對(duì)應(yīng)的初始二 進(jìn)制位長Ylen。
[0037] 例如,計(jì)算Z = 13 imodl7,即第一操作數(shù)X的值為17,轉(zhuǎn)換成二進(jìn)制數(shù)為X = 10001,Xlen = 5。又如,第二操作數(shù)Y的值為13,轉(zhuǎn)換成二進(jìn)制數(shù)為Y = 1101,Ylen = 4。
[0038] 在具體實(shí)施中,可W根據(jù)實(shí)際的應(yīng)用場景初始化第一變量R和第二變量S。在本發(fā) 明一實(shí)施例中,初始化第一變量R = 0,第二變量S = 1。
[0039] 步驟 S102,當(dāng) Xlen > Ylen 時(shí),計(jì)算 X 模 Y。
[0040] 在本發(fā)明實(shí)施例中,可W先對(duì)第一操作數(shù)對(duì)應(yīng)的Xlen與第二操作數(shù)對(duì)應(yīng)的Ylen 進(jìn)行比較。在Xlen > Ylen時(shí),根據(jù)第一操作數(shù)X的符號(hào)位,執(zhí)行對(duì)應(yīng)的操作,包括:
[OOW 1)在X為正數(shù)時(shí),即X的符號(hào)位為0時(shí),將X左移N1位至最高位為1,X的低位補(bǔ) N1位無效0 ;將左移后的X與Y高位對(duì)齊相減,將得到的差值的后N1位去除,得到的結(jié)果作 為更新后的X ;將第一變量R與左移狂len-Ylen)位的第二變量S低位對(duì)齊相加,并將得到 的和值作為更新后的第一變量R。在本發(fā)明實(shí)施例中,需要注意的是,在N1大于Xlen-Ylen 時(shí),X左移N1位后的值小于Y,X模Y計(jì)算結(jié)束,若X = 0,計(jì)算結(jié)束,若X〉0,進(jìn)行Y模X計(jì) 算。
[0042] 例如,X = ΟΟΟΙΟΟΟΙ,Υ = ΙΟΟΟ,Χ的符號(hào)位為0。將X左移N1 = 3位,低位補(bǔ)3位 無效0,則左移后的X = 10001000。在本發(fā)明實(shí)施例中,X在左移時(shí)低位補(bǔ)充的0是無效0, 實(shí)質(zhì)上并沒有參與X的運(yùn)算,即實(shí)質(zhì)上X對(duì)應(yīng)的二進(jìn)制位長xien = 5。
[0043] 將左移后的X與Y高位對(duì)齊做減法,在本發(fā)明實(shí)施例中,高位對(duì)齊運(yùn)算是指:數(shù)A 的位長為M,數(shù)B的位長為N,Μ > N,將數(shù)A和數(shù)B進(jìn)行高位對(duì)齊運(yùn)算,是指將數(shù)B的低位補(bǔ) (M-N)個(gè)0后進(jìn)行的運(yùn)算。
[0044] 即:
[0045]
[0046] 即得到的差值為00001000,將得到的差值的后3位去除,得到的值為00001,作為 更新后的X值,即更新后的X = 00001。
[0047] 初始化的第一變量R = 0,第二變量S = 1,第二變量S左移1位后,第二變量S更 新為S = 10,將第一變量R與左移后的第二變量S低位對(duì)齊并相加,得到0+10 = 10,即為 更新后的第一變量R= 10。 W48]。在X為負(fù)數(shù)時(shí),即X的符號(hào)位為1時(shí),將X左移N2位,X的低位補(bǔ)N2位無效0 ; 將左移后的X與Y高位對(duì)齊相加,將得到的和值的后N2位去除,得到的結(jié)果作為更新后的 X ;將第一變量R與左移狂len-Ylen)位的第二變量S低位對(duì)齊相減,并將得到的和值作為 更新后的第一變量R。其中,肥為:X最高位的0前的符號(hào)位的個(gè)數(shù)N3與狂len-Ylen)之 間的最小值。 W例例如,X =-10111,Y = 1101,X的符號(hào)位為1。將X左移N2 = 1位,低位補(bǔ)1位 無效零,則左移后的X = -01110??蒞理解的是,左移后的X中,后1位的0為無效0,即實(shí) 質(zhì)上X對(duì)應(yīng)的二進(jìn)制位長為Xlen = 4。將左移后的X與Y高位對(duì)齊做加法,即: 陽化0]
[0051] 即得到的和值為01000,將得到的和值的后1位去除,得到的值為0100,作為更新 后的X值,即更新后的X = 0100。
[0052] 當(dāng)前步驟第一變量R= 110,第二變量S = 1,第二變量S左移1位后,更新為S = 10。將第一變量R與左移后的第二變量S低位對(duì)齊相減,得到的差值為110-10 = 100,即更 新后的第一變量R = 100。
[0053] 步驟S103,當(dāng)Xlen《Ylen時(shí),計(jì)算Y模X。
[0054] 1)在Y為正數(shù)時(shí),將Y左移Ml位至最高位為1,低位補(bǔ)Ml位無效0,將左移后的Y與 X高位對(duì)齊相減,將差值的后Ml位去除,作為更新后的Y ;將第二變量S與左移燈len-xien) 位的第一變量R低位對(duì)齊相加,并將得到的和值作為更新后的第二變量S。 陽05引。在Y為負(fù)數(shù)時(shí),將Y左移M2化低位補(bǔ)M2位無效0,將左移后的Y與X高位對(duì) 齊相加,將得到的和值的后M2位去除,作為更新后的Y ;將第二變量S與左移(Ylen-Xlen) 位的第一變量R低位對(duì)齊相減,得到的差值作為更新后的第二變量S ;其中,M2為:Y最高位 的0前的符號(hào)位的個(gè)數(shù)M3與(Ylen-Xlen)之間的最小值。
[0056] 在本發(fā)明實(shí)施例中,步驟S103的運(yùn)算過程可W參見步驟S102,將步驟S102中的X 替換成Y,Y替換成X,R替換成S,S替換成R后,即可W為步驟S103中的運(yùn)算過程。
[0057] 在本發(fā)明實(shí)施例中,在模逆運(yùn)算的計(jì)算過程中,可W重復(fù)執(zhí)行步驟S102~步驟 S103,即:在X更新后,將更新后的X對(duì)應(yīng)的Xlen與Ylen進(jìn)行再次比較,并根據(jù)比較結(jié)果, 執(zhí)行步驟S102或步驟S103 ;或在Y更新完成后,將更新后的Y對(duì)應(yīng)的Ylen與Xlen進(jìn)行再 次比較,并根據(jù)比較結(jié)果,執(zhí)行步驟S102或步驟S103。
[0058] 重復(fù)執(zhí)行步驟S102或步驟S103,直至更新后的X和更新后的Y中,存在一個(gè)數(shù)為 0時(shí),停止模逆運(yùn)算。例如,在檢測到x = o時(shí),終止模逆運(yùn)算。并根據(jù)當(dāng)前Y的值,來確定 模逆運(yùn)算的結(jié)果。
[0059] 在本發(fā)明一實(shí)施例中,在更新后的X = 0且更新后的Y = 1時(shí),模逆運(yùn)算的結(jié)果為 更新后的第二變量S ;在更新后的X = 1且更新后的Y = 0時(shí),模逆運(yùn)算的結(jié)果為X的初始 值與更新后的第一變量R之差;在更新后的X與更新后的Y其中之一為0且另一不等于1 時(shí),判定模逆運(yùn)算的結(jié)果不存在。
[0060] 下面W X值為17、Y值為13為例,對(duì)本發(fā)明上述實(shí)施例中提供的模逆運(yùn)算方法進(jìn) 行說明。
[0061] 計(jì)算 Z = 13 imodl7。 陽06引分別將X和Y W二進(jìn)制數(shù)表示,則X= 10001,Υ= 1101。設(shè)定第一變量R = 0,第 二變量S = 1。從上述內(nèi)容可知,X對(duì)應(yīng)的Xlen = 5, Y對(duì)應(yīng)的Ylen = 4。
[0063] Xlen > Ylen,且XIen-Ylen = 1,X為正數(shù)且X的第一位為1,則不將X左移,即X 左移的位數(shù)為0。將X與Y高位對(duì)齊相減,將得到的差值作為更新后的X,即更新后的X = 10001-11010 = -10111。
[0064] 第一變量R與左移1位的第二變量S相加,將得到的和值作為更新后的R,即更新 后的R = 10。 陽0化]更新后的X = -10111為負(fù)數(shù),將X左移N2位,N2為X最高位的0前的符號(hào)位的個(gè) 數(shù)N3與狂len-Ylen)之間的最小值。X最高位的0前的符號(hào)位的個(gè)數(shù)N3 = 1,狂len-Ylen) =1,因此N2 = 1,即將X左移1位,低位補(bǔ)1位無效0,則左移后的X = -01110,由于最低 位的0為無效0,則左移后的X對(duì)應(yīng)的Xlen = 4。
[0066] 更新后的X對(duì)應(yīng)的Xlen與Ylen相等,Xlen-Ylen = 0。將Y與X相加,得到的和 值為-01110+11010 = 01000。將和值結(jié)果的最后1位去除,作為更新后的X,即更新后的X = 0100。
[0067] 第一變量R與左移0位的第二變量S相減,并將得到的差值作為更新后的R,即更 新后的R = 10-1 = 1。 W側(cè) Y = 1101,更新后的X = 0100, X的束一位為化號(hào)位,因此X = 100。由于XIen不 包括X的符號(hào)位,因此Xlen = 3,即Ylen大于更新后的X對(duì)應(yīng)的Xlen,Ylen-Xlen = 1。Y 為整數(shù)且Υ的第一位為1,Υ不左移。將Υ與X高位對(duì)齊相減,將得到的差值作為更新后的 Υ,即更新后的 Υ = 1101-1000 = 0101。 W例將更新后的R左移1位,并與第二變量S相加,得到更新后的第二變量S = 1+10 = 11。
[0070] 將更新后的Υ最高位為0,Υ為整數(shù),將Υ左移1位至最高位為1,低位補(bǔ)1位無效 0,左移后的Υ = 1010。由于左移后的Υ的最低位的0為無效0,則Υ對(duì)應(yīng)的Ylen = 3,X = 100,對(duì)應(yīng)的 Xlen = 3,即 Xlen = Ylen。 陽071] 將Y與X高位對(duì)齊相減,得到的差值為1010-1000 = 10,將差值的最低位的0去 除,得到的值為1,即更新后的Υ= 1。將更新后的第二變量S與更新后的第一變量R相加, S = 11,R = 1,得到更新后的第二變量S = 11+1 = 100。
[0072] 更新后的Υ = 1,X = 100,即X對(duì)應(yīng)的位長Xlen = 3, Υ對(duì)應(yīng)的位長Ylen = 1, Xlen-Ylen = 2。將X與Y高位對(duì)齊相減,得到的差值為100-100 = 0,即為更新后的X值。 將第一變量R與左移2位的第二變量S相加,得到的和值為更新后的第一變量R = 1+10000 =10001。
[0073] 此時(shí),更新后的X = 0,更新后的Υ= 1,模逆運(yùn)算結(jié)束。
[0074] 從上述內(nèi)容中可知,在更新后的X = 0且更新后的Υ = 1時(shí),模逆運(yùn)算的結(jié)果為更 新后的第二變量S。第二變量S = 100,轉(zhuǎn)換成十進(jìn)制數(shù)為4。即13 imodlT = 4。
[007引代入驗(yàn)證:13X4 = 52,對(duì)17求模得到的結(jié)果為1,即本發(fā)明上述實(shí)施例提供的模 逆運(yùn)算方法求得的結(jié)果正確。
[0076] 由此可見,在第一操作數(shù)X位長大于第二操作數(shù)Y時(shí),X左移時(shí)可W消除冗余的符 號(hào)位,通過變量Xlen記錄X的實(shí)時(shí)位長,X的權(quán)值沒有發(fā)生變化。R和S的運(yùn)算遵循低位對(duì) 齊的運(yùn)算方法,R無左移操作,即R的權(quán)值也沒有發(fā)生改變。類似的,在Y位長大于X時(shí),Y 左移時(shí)可W消除冗余的符號(hào)位,通過變量Ylen記錄Y的實(shí)時(shí)位長,Y的權(quán)值沒有發(fā)生變化。 R和S的運(yùn)算遵循低位對(duì)齊的運(yùn)算方法,S無左移操作,即S的權(quán)值也沒有發(fā)生改變。即在 整個(gè)模逆運(yùn)算過程中,運(yùn)算的結(jié)果不包括權(quán)重因子,相比于現(xiàn)有的二進(jìn)制擴(kuò)展歐幾里得算 法,不需要再對(duì)運(yùn)算結(jié)果進(jìn)行權(quán)重因子的消除操作,并且可W不限定模必須為奇數(shù),可W實(shí) 現(xiàn)對(duì)任意非零整數(shù)求模。
[0077] 本發(fā)明實(shí)施例還提供了一種模逆運(yùn)算器,用于計(jì)算Z = Y imod X,其中Z為所述模 逆運(yùn)算的結(jié)果,X為第一操作數(shù),Y為第二操作數(shù),參照?qǐng)D2,包括:控制器201、移位器202、 加減法運(yùn)算器203 W及存儲(chǔ)器204,其中:
[0078] 存儲(chǔ)器204中,存儲(chǔ)有第一操作數(shù)X、第二操作數(shù)Y、第一變量R W及第二變量S。
[0079] 控制器201,適于保存并更新所述第一操作數(shù)X對(duì)應(yīng)的二進(jìn)制位長Xlen W及符號(hào) 位Xsign、所述第二操作數(shù)Y對(duì)應(yīng)的二進(jìn)制位長Ylen W及符號(hào)位Ysign,控制所述移位器 202 W及所述加減法運(yùn)算器203實(shí)現(xiàn)X模Υ W及Υ模X,包括:
[0080] 在Xlen > Ylen,且Xsign = 0時(shí),控制所述移位器202將X左移Ν1位至最高位 為1,低位補(bǔ)N1位無效0,控制所述移位器202將所述第二變量S左移狂len-Ylen)位;控 制所述加減法運(yùn)算器203將左移后的X與Y高位對(duì)齊相減,將差值的后N1位去除作為更新 后的X并保存,將第一變量R與左移后的第二變量S低位對(duì)齊并相加,得到的和值作為更新 后的第一變量R。
[0081] 在本發(fā)明實(shí)施例中,在進(jìn)行模逆運(yùn)算時(shí),控制器201從存儲(chǔ)器204中讀取X和Y,將 X送入移位器202。移位器202將X左移N1位至最高位為1,移位后X位長多出Y的低位 結(jié)果直接寫入到存儲(chǔ)器204,與Y位長相等的高位結(jié)果送入至加減法運(yùn)算器203。加減法運(yùn) 算器203將X的高位部分與Y相減,并將運(yùn)算結(jié)果寫入至存儲(chǔ)器204。在加減法運(yùn)算器203 進(jìn)行減法運(yùn)算的過程中出現(xiàn)借位時(shí),X的符號(hào)位取反,否則X的符號(hào)位不變。將高位運(yùn)算的 結(jié)果與移出的低位結(jié)合,并去除低位中的后N1位,作為更新后的X。
[0082] 例如,X = 00011001,Y = 1000。將X送入至移位器202,將X左移3位至最高位 為1,移位后X = 11001000,移位后的X位長多出Y的低位結(jié)果為1000,將1000寫入到存 儲(chǔ)器204中。與Y位長相等的X的高位結(jié)果為1100,將1100送入至加減法運(yùn)算器203與Y 相減,得到的運(yùn)算結(jié)果為0100,將運(yùn)算結(jié)果寫入至存儲(chǔ)器203。將高位運(yùn)算的結(jié)果與移出的 低位結(jié)合,得到的值為01001000,去除01001000的后3位,得到的值為01001即為更新后的 X。
[0083] 在本發(fā)明一實(shí)施例中,控制器201從存儲(chǔ)器204中讀取第一變量R和第二變量S, 將第二變量S送入至移位器202。移位器202將第二變量S左移N1位,加減法運(yùn)算器203 將第一變量R與左移后的第二變量低位對(duì)齊相加,得到的和值作為更新后的第一變量R。
[0084] 可W理解的是,在本發(fā)明實(shí)施例中,第一變量R的計(jì)算與更新還可W存在其他的 實(shí)現(xiàn)方法。
[00化]在本發(fā)明另一實(shí)施例中,在計(jì)算X模Y的過程中,預(yù)先設(shè)置第Ξ變量QS,第Ξ變量 QS存儲(chǔ)在存儲(chǔ)器204中,且第Ξ變量QS的初始值為0。在每次X左移N1位與Y高位對(duì)齊 相減之后,從存儲(chǔ)器204中讀取第Ξ變量QS W及第二變量S。將第Ξ變量QS送入至移位 器202中左移N1位,將移位結(jié)果送入至加減法運(yùn)算器203。加減法運(yùn)算器203將左移后的 第=變量QS與第二變量S低位對(duì)齊并相加,得到的和值作為更新后的第Ξ變量QS。在X模 Y計(jì)算結(jié)束時(shí),從存儲(chǔ)器204中讀取第一變量R和更新后的第Ξ變量QS,送入至加減法運(yùn)算 器203中,將第一變量R與更新后的第Ξ變量QS低位對(duì)齊相加,得到的和值作為更新后的 第一變量R。
[0086] 在Xlen > Ylen,且Xsign = 1時(shí),控制所述移位器將X左移N2位,低位補(bǔ)N2位無 效0,控制所述移位器將所述第二變量S左移狂len-Ylen)位;控制所述加減法運(yùn)算器將左 移后的X與Y高位對(duì)齊相加,將和值的后N2位去除作為更新后的X并保存,將第一變量R 與左移后的第二變量S低位對(duì)齊并相減,得到的差值作為更新后的第一變量R,其中,N2為: X最高位的0前的符號(hào)位的個(gè)數(shù)N3與狂len-Ylen)之間的最小值。
[0087] 在本發(fā)明實(shí)施例中,在Xsign = 1,即X為負(fù)數(shù)時(shí),移位器202將X左移N2位至最 高位為1,移位后X位長多出Y的低位結(jié)果直接寫入到存儲(chǔ)器204,與Y位長相等的高位結(jié) 果輸入至加減法運(yùn)算器203。加減法運(yùn)算器203將X的高位部分與Y相加,并將運(yùn)算結(jié)果 寫入至存儲(chǔ)器204。在加減法運(yùn)算器203進(jìn)行減法運(yùn)算的過程中出現(xiàn)進(jìn)位時(shí),X的符號(hào)位取 反,否則X的符號(hào)位不變。將高位運(yùn)算的結(jié)果與移出的低位結(jié)合,并取出低位中的后N2位, 作為更新后的X。 陽0蝴例如,Χ = -10111,Υ= IIOIdX最高位的0前的符號(hào)位的個(gè)數(shù)N3 = 1,狂len-Ylen) =1,因此N2= 1。將X送入至移位器202,將X左移1位,移位后Χ = 01110,移位后的X位 長多出Υ的低位結(jié)果為0,將0寫入到存儲(chǔ)器204中。與Υ位長相等的X的高位結(jié)果為-0111, 將0111送入至加減法器203與Υ相加,在相加的過程中產(chǎn)生了進(jìn)位,X符號(hào)位取反,得到的 高位運(yùn)算的結(jié)果為0100,將高位運(yùn)算的結(jié)果與移出的低位結(jié)合,得到的值為01000,去除低 位中的后1位0,得到的值作為更新后的X,即更新后的X = 0100。
[0089] 在本發(fā)明一實(shí)施例中,控制器201從存儲(chǔ)器204中讀取第一變量R和第二變量S, 將第二變量S送入至移位器202。移位器202將第二變量S左移狂len-Ylen)位,加減法運(yùn) 算器203將第一變量R與左移后的第二變量S低位對(duì)齊相減,得到的差值作為更新后的第 一變量R。
[0090] 在本發(fā)明另一實(shí)施例中,在計(jì)算X模Y的過程中,預(yù)先設(shè)置第Ξ變量QS,第Ξ變量 QS存儲(chǔ)在存儲(chǔ)器204中,且第Ξ變量QS的初始值為0。在每次X左移N1位與Y高位對(duì)齊 相加之后,從存儲(chǔ)器204中讀取第Ξ變量QS W及第二變量S。將第Ξ變量QS送入至移位 器202中左移N1位,將移位結(jié)果送入至加減法運(yùn)算器203。加減法運(yùn)算器203將左移后的 第=變量QS與第二變量S低位對(duì)齊并相減,得到的差值作為更新后的第Ξ變量QS。在X模 Y計(jì)算結(jié)束時(shí),從存儲(chǔ)器204中讀取第一變量R和更新后的第Ξ變量QS,送入至加減法運(yùn)算 器203中,將第一變量R與更新后的第Ξ變量QS低位對(duì)齊相減,得到的差值作為更新后的 第一變量R。
[0091] 在Xlen《Ylen,且Ysign = 0時(shí),控制所述移位器將Y左移Ml位至最高位為1, 低位補(bǔ)Ml位無效0,控制所述移位器將所述第一變量R左移(Ylen-Xlen)位;控制所述加減 法運(yùn)算器將左移后的Y與X高位對(duì)齊相減,將差值的后N1位去除作為更新后的Y并保存, 將第二變量S與左移后的第一變量R低位對(duì)齊并相加,得到的和值作為更新后的第二變量 S。
[0092] 在Xlen《Ylen,且Ysign = 1時(shí),控制所述移位器將Y左移M2位,低位補(bǔ)M2位無 效0,控制所述移位器將所述第一變量R左移(Ylen-Xlen)位;控制所述加減法運(yùn)算器將左 移后的Y與X高位對(duì)齊相加,將和值的后M2位去除作為更新后的Y并保存,將第二變量S 與左移后的第一變量R低位對(duì)齊并相減,得到的差值作為更新后的第二變量S,其中,M2為: Y最高位的0前的符號(hào)位的個(gè)數(shù)M3與燈len-Xlen)之間的最小值。
[0093] 在本發(fā)明實(shí)施例中,在Xlen《Ylen時(shí),模逆運(yùn)算的過程可W參照本發(fā)明上述實(shí)施 例中提供的Xlen > Ylen時(shí)的過程,此處不做寶述。
[0094] 在本發(fā)明實(shí)施例中,可W通過控制器201控制移位器202和加減法運(yùn)算器203循 環(huán)執(zhí)行上述操作,直至得到更新后的X和更新后的Y中的一個(gè)值為0時(shí),結(jié)束模逆運(yùn)算。 陽0巧]在所述控制器得到的更新后的X = 0且更新后的Y = 1時(shí),所述模逆運(yùn)算的結(jié)果 為更新后的S ;在更新后的X = 1且更新后的Y = 0時(shí),所述模逆運(yùn)算的結(jié)果為X的初始值 與更新后的R之差;在更新后的X與更新后的Y其中之一等于0而另一個(gè)不等于1時(shí),說明 X和Y不互素,所述模逆運(yùn)算的結(jié)果不存在。
[0096] 本領(lǐng)域普通技術(shù)人員可W理解上述實(shí)施例的各種方法中的全部或部分步驟是可 W通過程序來指示相關(guān)的硬件來完成,該程序可W存儲(chǔ)于一計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中,存儲(chǔ) 介質(zhì)可W包括:ROM、RAM、磁盤或光盤等。
[0097] 雖然本發(fā)明披露如上,但本發(fā)明并非限定于此。任何本領(lǐng)域技術(shù)人員,在不脫離本 發(fā)明的精神和范圍內(nèi),均可作各種更動(dòng)與修改,因此本發(fā)明的保護(hù)范圍應(yīng)當(dāng)W權(quán)利要求所 限定的范圍為準(zhǔn)。
【主權(quán)項(xiàng)】
1. 一種模逆運(yùn)算方法,用于計(jì)算z = Y kodX,其中Z為所述模逆運(yùn)算的結(jié)果,X為第一 操作數(shù),Y為第二操作數(shù),其特征在于,包括: 獲取第一操作數(shù)X的二進(jìn)制位長xien以及第二操作數(shù)Y的二進(jìn)制位長Hen ;初始化 第一變量R與第二變量S ; 當(dāng)XIen彡Hen時(shí),計(jì)算X模Y : 在X為正數(shù)時(shí),將X左移N1位至最高位為1,低位補(bǔ)N1位無效0,將左移后的X與Y高 位對(duì)齊相減,將差值的后N1位去除,作為更新后的X,將第一變量R與左移OClen-Ylen)位 的第二變量S低位對(duì)齊相加之和作為更新后的第一變量R ; 在X為負(fù)數(shù)時(shí),將X左移N2位,低位補(bǔ)N2位無效0,將左移后的X與Y高位對(duì)齊相加, 將和值的后N2位去除,作為更新后的X,將第一變量R與左移OClen-Ylen)位的第二變量S 低位對(duì)齊并相減,得到的差值作為更新后的第一變量R,其中,N2為:X最高位的0前的符號(hào) 位的個(gè)數(shù)N3與(Xlen-Ylen)之間的最小值; 當(dāng)Xlen < Hen時(shí),計(jì)算Y模X : 在Y為正數(shù)時(shí),將Y左移Ml位至最高位為1,低位補(bǔ)Ml位無效0,將左移后的Y與X高 位對(duì)齊相減,將差值的后Ml位去除,作為更新后的Y ;將第二變量S與左移(Ylen-Xlen)位 的第一變量R低位對(duì)齊相加之和作為更新后的第二變量S ; 在Y為負(fù)數(shù)時(shí),將Y左移M2位,低位補(bǔ)M2位無效0,將左移后的Y與X高位對(duì)齊相加, 將和值的后M2位去除,作為更新后的Y ;將第二變量S與左移(Hen-Xlen)位的第一變量 R低位對(duì)齊并相減,得到的差值作為更新后的第二變量S,其中,M2為:Y最高位的0前的符 號(hào)位的個(gè)數(shù)M3與(Ylen-Xlen)之間的最小值; 在更新后的X = 〇且更新后的Y = 1時(shí),所述模逆運(yùn)算的結(jié)果為更新后的第二變量S ; 在更新后的X = 1且更新后的Y = 〇時(shí),所述模逆運(yùn)算的結(jié)果為X的初始值與更新后的第 一變量R之差;在更新后的X與更新后的Y其中之一等于0而另一個(gè)不等于1時(shí),所述模逆 運(yùn)算的結(jié)果不存在。2. -種模逆運(yùn)算器,用于計(jì)算Z = Y bod X,其中Z為所述模逆運(yùn)算的結(jié)果,X為第一 操作數(shù),Y為第二操作數(shù),其特征在于,包括:控制器、移位器、加減法運(yùn)算器以及存儲(chǔ)器,其 中: 所述存儲(chǔ)器,適于存儲(chǔ)第一操作數(shù)X、第二操作數(shù)Y、第一變量R以及第二變量S ; 所述控制器,適于保存并更新所述第一操作數(shù)X對(duì)應(yīng)的二進(jìn)制位長)(len以及符號(hào)位 Xsign、所述第二操作數(shù)Y對(duì)應(yīng)的二進(jìn)制位長Hen以及符號(hào)位Ysign,控制所述移位器以及 所述加減法運(yùn)算器實(shí)現(xiàn)X模Y以及Y模X,包括: 在)(len多Ylen,且Xsign = 0時(shí),控制所述移位器將X左移N1位至最高位為1,低位 補(bǔ)N1位無效0,控制所述移位器將所述第二變量S左移(Xlen-Ylen)位;控制所述加減法 運(yùn)算器將左移后的X與Y高位對(duì)齊相減,將差值的后N1位去除作為更新后的X并保存,將 第一變量R與左移后的第二變量S低位對(duì)齊并相加,得到的和值作為更新后的第一變量R ; 在)(len多Ylen,且Xsign = 1時(shí),控制所述移位器將X左移N2位,低位補(bǔ)N2位無效 〇,控制所述移位器將所述第二變量S左移(Xlen-Ylen)位;控制所述加減法運(yùn)算器將左移 后的X與Y高位對(duì)齊相加,將和值的后N2位去除作為更新后的X并保存,將第一變量R與 左移后的第二變量S低位對(duì)齊并相減,得到的差值作為更新后的第一變量R ;其中,N2為:X 最高位的0前的符號(hào)位的個(gè)數(shù)N3與(Xlen-Ylen)之間的最小值; 在)(len < Ylen,且Ysign = 0時(shí),控制所述移位器將Y左移Ml位至最高位為1,低位 補(bǔ)Ml位無效0,控制所述移位器將所述第一變量R左移(Ylen-Xlen)位;控制所述加減法 運(yùn)算器將左移后的Y與X高位對(duì)齊相減,將差值的后N1位去除作為更新后的Y并保存,將 第二變量S與左移后的第一變量R低位對(duì)齊并相加,得到的和值作為更新后的第二變量S ; 在)(len < Ylen,且Ysign = 1時(shí),控制所述移位器將Y左移M2位,低位補(bǔ)M2位無效 〇,控制所述移位器將所述第一變量R左移(Ylen-Xlen)位;控制所述加減法運(yùn)算器將左移 后的Y與X高位對(duì)齊相加,將和值的后M2位去除作為更新后的Y并保存,將第二變量S與 左移后的第一變量R低位對(duì)齊并相減,得到的差值作為更新后的第二變量S ;其中,M2為:Y 最高位的〇前的符號(hào)位的個(gè)數(shù)M3與(Ylen-Xlen)之間的最小值; 在所述控制器得到的更新后的X = 〇且更新后的Y = 1時(shí),所述模逆運(yùn)算的結(jié)果為更 新后的S ;在更新后的X = 1且更新后的Y = 0時(shí),所述模逆運(yùn)算的結(jié)果為X的初始值與更 新后的R之差;在更新后的X與更新后的Y其中之一等于0而另一個(gè)不等于1時(shí),所述模逆 運(yùn)算的結(jié)果不存在。
【文檔編號(hào)】G06F7/72GK105988772SQ201510096948
【公開日】2016年10月5日
【申請(qǐng)日】2015年3月4日
【發(fā)明人】劉凱, 陸繼承, 趙曉冬, 王宇
【申請(qǐng)人】上海復(fù)旦微電子集團(tuán)股份有限公司