專利名稱:模運算的裝置和方法
技術領域:
本發(fā)明涉及模運算(modulocomputation)的裝置和方法。
D.Naccache,H.Mstilti在《RAIRO-OR》1990年(3)上以“一種新的模運算法”為題發(fā)表了一種計算Y以X為模的余數(shù)(=modulo(Y.X);簡寫為Y mod X)的新方法,在這里2n-1≤X≤2n-1且0≤Y≤2L-1,值n表示X的畢特(bits)長度而L代表計算所接受的Y的最大尺寸。這個算法下面稱作Prince Leonard算法,簡稱為PLA。
本發(fā)明的一個目的是披露一種具有被減少的存儲器尺寸的快速模運算方法。這個目的是通過在權利要求3中披露的本發(fā)明的方法來達到的。
本發(fā)明的A*B對模X的余數(shù)的模運算方法一般包括下列步驟-分別在第一組存貯單元RAM1及第二組RAM2存貯單元中存入所說數(shù)A和B;
-進行破壞相乘A×B=C;
-將存儲在所說第二組RAM2單元的數(shù)據(jù)轉(zhuǎn)移到所說第一組RAM1單元;
-將所說第二組RAM2單元歸零;
-將存儲在第三組RAM3單元的數(shù)據(jù)向右移位三個位置,這個數(shù)據(jù)用Ci代表其中i是二進制數(shù)字上最小有效二進制數(shù)位(LSB)為i=0,同時將這三個最右位二進制數(shù)字Cn-1,Cn及Cn+1引入所說第三組RAM3單元的最左位(即最小有效二進制數(shù)位LSB′s);
-用存儲在所說第三組RAM3單元的數(shù)據(jù)破壞相乘第二常數(shù)K=2zh/X,這個常數(shù)在一可檢索裝置(retrievable medium)中以n+1畢特長度被存儲;
-將以Dn+1′表示的存儲在所說第二組RAM2單元中的最右位二進制數(shù)字推到所說第三組RAM3單元中的最左位;
-將所說第二組RAM2單元歸零;
-用存儲在所說第三組RAM3單元中的數(shù)據(jù)部分地乘以第一常數(shù)X,這個常數(shù)在所說可檢索裝置中以n畢特長度來存儲。由此,在所說第二組RAM2單元中只獲得n+2LSB(最小有效二進制數(shù)位)。
-從RAM1中減去RAM2(比方說F=RAM1-RAM2);
-當存儲在所說第一組RAM1單元中的數(shù)字大于所說第一常數(shù)X時,從存儲在所說第一組RAM1單元中減去所說第一常數(shù)X。
由此,存儲在包括所說三組單元和/或存儲在所說可檢索裝置的RAM矩陣(RAMmatrix)里的數(shù)字和/或數(shù)據(jù)可以以逆向格式(inverseformat)(MSB(最大有效二進制數(shù)位)……LSB)存貯,所說第一、二和/或第三組單元的次序可以被變更,和/或取代各所說單元組歸零,可以連續(xù)地(沖掉)重寫各組。
本發(fā)明方法的具有優(yōu)點的附加實施例來自各個細分權利要求(subclaims)。
本發(fā)明的另一個目的是披露一種使用本發(fā)明方法的裝置。這個目的是通過在權利要求1中所披露的本發(fā)明裝置所達到的。
用于A*BModX模運算的本發(fā)明裝置,在這里A,B及第一常數(shù)X是n字節(jié)數(shù)(bytenumbers二進位組),這個裝置一般包括-一可檢索裝置,如RAM,ROM(只讀存貯器)或E2PROM記錄有所說第一常數(shù)X及第二常數(shù)K=22n/X;
-包括第一組RAM1單元,第二組RAM2單元及第三組RAM3單元的具有3*(int(n/8)+1)尺寸字節(jié)的RAM矩陣;
-一種計算裝置,它允許存儲在所說RAM矩陣里的數(shù)據(jù)的多位相減,多位移位運算,多位數(shù)據(jù)轉(zhuǎn)遞進或出所說可檢索裝置及所說RAM矩陣,多位完全的且破壞的相乘。
本發(fā)明裝置的具有優(yōu)勢的附加實施例來自各個細分權利要求。
在付費電視系統(tǒng)中比如在視頻密碼付費電視系統(tǒng)(videocryptpayTVsistem)及其它現(xiàn)代密碼通信中的編碼通常需要模運算。在不能使用大容量RAM存儲器的小型密碼裝置(如靈敏卡(smart-cards))中,特殊的PLA執(zhí)行過程允許這樣的模函數(shù)的有效計算。
由此為了計算R=YmodX僅需要約為X大小三倍的RAM空間。
如果X和常數(shù)K存儲在可檢索裝置如ROM中,從微控制器或微處理器中也不需要除去。
本發(fā)明的最佳實施例將參照附圖來描述,其中
圖1示出了帶有計算電路(compntationcircuit)的靈敏長。
圖1中描述了靈敏卡10,它包括微處理器電路11。這個微處理器電路與RAM存儲器電路12,ROM存儲器13及I/O接口電路14。使用各電路線可以交換數(shù)據(jù)和地址數(shù)。在微處理器電路11里進行PLA過程的程序存儲在ROM13中。
當?shù)谝淮螆?zhí)行這個過程時,為了用其它小于2L-1的Y值進一步再調(diào)入(recall)PLA,計算常數(shù)K(依賴于X和L)并將其存儲在RAM 12中。
RAM和/或ROM 13和/或I/O接口電路14可以被包括在微處理器電路11中。ROM 13也可以是一E2PROM。
K的計算需要一次除法,但以后轉(zhuǎn)移到需要二次乘法,二次右移位及至少三次減法的過程,假定在這個過程X保持不變。
最普通的現(xiàn)有計算R=YmodX的設計(scheme)是R=Y-X*int(Y/X)或是以程序設計語言C-like符號來表示Unsignedcommon(Y,X),(programcommon)UnsignedY,X;
{return(Y-X*(Y/X));
}這個計算方法用于任何一對整數(shù),但由于這個過程每一次要求不同的除法所以它的時間通常很長。
在本發(fā)明的一個裝置中,如靈敏長10,對每一個X(只一次用微處理器電路11計算常數(shù)值K并將K值存貯在RAM12中。當用不同Y值調(diào)入模X時再使用K。當以后有利地進行這個過程時使用一完全確定的間隔,在這個間隔中使用在微處理器電路11中很少的減法來精細(refine)計算。由于以移位和乘法來計算這個距離所以轉(zhuǎn)移到這個過程是很容易做的。
如果X是一個在裝置的壽命期永不改變的常數(shù),有利地是K可以通過靈敏卡10的發(fā)行人(issuer)來計算并存貯在ROM13中。
所有根據(jù)本發(fā)明的減號運算(minusoperation)將作為無符號數(shù)字對數(shù)字(unsigneddigit-todigit)(這里是畢特對畢特)減法,例如10397-21033=89364,且以程序設計語言C-like符號來寫這個計算設計。
本發(fā)明裝置根據(jù)下列計算模函數(shù)的程序工作Unsignedmodulo(Y,X);(programmodulo)UnsignedY,X;
{StaticunsignedCOPY_X,K;
UnsignedA;
if(COPY_X?。絏){K←2L/(COPY_X←X);}A←X*((K*(Y>>(n-1)))>>(L-n+1));
A←Y%2n+2-A%2n+2;
While(A≥X){A←A-X;}Return(A);
}應該指出當環(huán)路(while loop)至多執(zhí)行二次且%2n+2的計算是以Y和A的n+2最小二進制有效位來進行的簡單減法如果這行A←Y%2n+2-A%2n+2;
被A←Y-A;取代這個modulo(Y,X)函數(shù)也會工作得很好。
》代表右移算子,%代表左移算子。
可以證明上述語句是真實的在當環(huán)路以前從Y中減去((K(Y))(n-1)))》(L-n+1)timesX結果Y-X*((K(Y》(n-1)))》(L-n+1))≡R或Y-X*((K(Y》(n-1)))》(L-n+1))-X*△=R計算△的值導致Y-X*((K(Y>>(n-1)))>>(L-n+1))-X*△=Y-X*int(Y/X)X*((K(Y>>(n-1)))>>(L-n+1))+X*△=X*int(Y/X)((K(Y>>(n-1)))>>(L-n+1))+△=int(Y/X)存在著α<X/int(Y/X)=Y/X-α/X((K(Y>>(n-1)))>>(L-n+1))+△=Y/X-α/X類似存在著β<2n-1/Y>>(n-1)=Y/2n-1-β/2n-1及
γ<X/K=2L/X-γ/X{(Y/2n-1-β/2n-1)*(2L/X-γ/X)}>>(L-n+1)-Y/X+α/X=-△{Y/(X*2n-1-L)-β/(X*2n-1-L)-Y*γ/(X*2n-1)+γ*β/(X*2n-1)}>>(L-n+1)-Y/X+α/X=-△及最后存在著ε<2L-n+1/{Y/(X*2n-1-L)-β/(X*2n-1-L)-Y*γ/(X*2n-1)+γβ/(X*2n-1)}>>(L-n+1)={Y/(X*2n-1-L)-β/(X*2n-1-L)-Y*γ/(X*2n-1)+γβ/(X*2n-1)}/2L-n+1-ε/2L-n+1結果{Y/(X*2n-1-L)-β/(X*2n-1-L)-Y*γ/(X*2n-1)+γβ/(X*2n-1)}/2L-n+1-ε/2L-n+1-Y/X+α/X=-△Y/X-β/X-Y*γ/(X*2L)+γβ/(X*2L)-ε/2L-n+1-Y/X+α/X=-△β/X+Y*γ/(X*2L)-γβ/(X*2L)+ε/2L-n+1-α/X=△△≤β/X+Y*γ/(X*2L)+ε/2L-n+1<β/X+Y/2L+ε/2L-n+1<β/X+Y/2L+1
由于2n-1≤X且Y≤2L-1(見背景段中的定義),因而△<3。
這證明在最壞的場合當回路將被執(zhí)行二次。
由于X長等為n畢特,3*X至少n+2畢特長。結果,減法Y-X((K(Y》(n-1)))》(L-n+1))可以在每個數(shù)字的n+2最小有效數(shù)位上來進行,且運行A←Y-A;
可以由下行A←Y%2n+2-A%2n+2來取代。
二個例子將解釋這個運算計算R=48619mod93≡73及S=47711mod93≡2R=?LetL=17X=(93)10=1011101→n=7K=2L/X=10110000001Y=(48619)10=1011110111101011Y>>(n-1)=1011110111(n-1LSB′ssuppressed)K*(Y>>(n-1))=10110000001*1011110111=100000101000101110111
(K*(Y>>(n-1)))>>(L-n+1)=1000001010X*(K*(Y>>(n-1)))>>(L-n+1)=1011110110100010X*(K*(Y>>(n-1)))>>(L-n+1)%2n+2=110100010Y%2n+2=111101011111101011-110100010-----------=1001001=(73)10=RS=?LetL=17X=(93)10=1011101→n=7K=2L/X=10110000001Y=(47711)10=1011101001011111Y>>(n-1)=1011101001(n-1LSB′ssuppressed)K*(Y>>(n-1)=10110000001*1011101001=100000000010001101001(K*(Y>>(n-1)))>>(L-n+1)=1000000000X*(K*(Y>>(n-1)))>>(L-n+1)=1011101000000000X*(K*(Y>>(n-1)))>>(L-n+1)%2n+2=000000000Y%2n+2=001011111001011111-000000000-----------1011111(Whileloop)-1011101---------=10=(2)10=S
在程序′common′(一次除法,一次乘法及一次減法)與程序′modulo′(在第一次工作中(inthefirstactivation)的二次乘法,二次右移位運算,二次左移位運算,三次減法及一次乘法)間的理論差可以忽略(對n畢特數(shù)字)在每一個n時鐘周期中做“》n′%n′的說明。
A-B與A+B取大約2*n,A*B是2*n2的而且一般允許一個除法與4個乘法相等。如果用C(k)n代表在n-畢特數(shù)字上進行K程序′common′所需的時間,用M(k)n代表用于程序′modulo′的類似時間,則Cn(k)=k*(4*(2*n2)+2*n2+2*n)=k*(10*n2+2*n);
Mn(k)=4*(2*n2)+k*(2*(2*n2)+2*n+2*n+3*(2*n))=8*n2+k*(4*(n2)+10*n).
對于n=10(C10(k)=k*1020及M10(k)=800+k*500這導致C10(1)<M10(1),但對任何k>1M10(k)<C10(k)這指出在重復模運算的場合本發(fā)明的模運算更快。
本發(fā)明模運算還可進一步來改進。
可以證明對于所有u<L
int(in+(2L/X)/2u)=int(2L-U/X)。
這可以以一個被改進的形式用于重寫程序′modolo′,這個改進形式為Unsignedmodulo_1(Y,X);(programmodulo_1)UnsignedY,X;
{StaticunsignedintCOPY_X,K;
UnsignedintA,Z,l;
if(COPY_X?。絏){K←2L/(COPY_X←X);}1←Number_of_digits(Y);
Z←K>>(L-l-1);
A←X*((Z*(Y>>(n-1)))>>(l-n+2));
A←Y%2n+2-A%2n+2;
While(A≥X){A←A-X;}Return(A);
}為了舉例說明與程序′modulo′的不同,計算下列例子
T=1000modulo_193(≡70)T=?Let Y=(1000)10=1111101000→1=10Y>>(n-1)=1111Z=K>>(L-l-1)=10110000001>>(17-10-1)10=10110Z*(Y>>(n-1))=10110*1111=101001010(Z*(Y>>(n-1)))>>(1-n+2)=1010X*((Z*(Y>>(n-1)))>>(1-n+2))=1110100010X*((Z*(Y>>(n-1)))>>(1-n+2))%2n+2=110100010Y%2n+2=111101000111101000-110100010-----------1000110=(70)10=T.
程序′Modulo′的相應計算K*(Y>>(n-1))=10110000001*1111=101001010001111(K*(Y>>(n-1)))>>(L-n+1)=1010X*((K*(Y>>(n-1)))>>(L-n+1))=1110100010X*((K*(Y>>(n-1)))>>(L-n+1))%2n+2=110100010Y%2n+2=111101000111101000-110100010-----------11000110=(70)10=T.
現(xiàn)在對于實際場合L=2*n,更詳細地描述本發(fā)明模計算。
程序′Modulo′改變?yōu)閁nsignedmodulo_2n(Y,X);(programmodulo_2n)UnsignedY,X;
{StaticunsignedCOPY_X,K;
UnsignedA;
if(COPY_X?。絏){K←22*n/(COPY_X←X);}A←X*((K*(Y>>(n-1)))>>(n+1));
A←Y%2n+2-A%2n+2;
While(A≥X){A←A-X;}Return(A);
}當根據(jù)本發(fā)明計算時,使用一特殊乘法,叫破壞乘法,破壞乘法是一個乘法過程,在這個過程中,產(chǎn)生結果C(A*B的乘積)同時為了在RAM12中獲得位置而破壞A。
為了舉例說明這個運算,計算乘積911*163=148493(在實際運算中包括黑體數(shù)字)911911911*163*163*162003033733
最后的乘法3*9的結果為27。27的數(shù)字7是733的第一數(shù)字且27的數(shù)字2是162的最后數(shù)字。下一步163的數(shù)字3就不需要3且由結果27的數(shù)字2來取代911911911*162*163*157793393393第一乘法6*1的結果為6,它被加到733的中間數(shù)位→793。第二乘法6*1的結果6被加到793的第一數(shù)字7上。這導致了數(shù)字393及數(shù)字163的最后數(shù)字3(=2+1)。最后乘法6*9結果為54。這個結果的第二數(shù)字被加到數(shù)字163的最后數(shù)位3上。163的第二數(shù)位6將不再需要且由結果54的數(shù)位5來取代911911911*157*158*148493493493最后乘法1*9結果為9。這個結果被加到數(shù)字158的第二數(shù)位5上。158的第一數(shù)字1將不再需要且由和5+9=14的第一數(shù)位1來取代?,F(xiàn)在數(shù)字148代表最后結果148493的前三個數(shù)位且數(shù)字493代表后三位數(shù)字。
值X及K都存貯在ROM13中。在RAM12中的必要RAM空間是3*(int(n/8)+1)字節(jié)矩陣(如如果n=38則矩陣尺寸為5*3)。數(shù)字Ai…Fi是多字節(jié)數(shù)組,這里i是畢特數(shù)且i=0為最小二進制有效數(shù)位。
←int(n/8)+1→RAM1……↑RAM2……|3RAM3……↓開始,A和B分別存貯在RAM1及RAM2中RAM1 A0A1A2A3……An-2An-100RAM2 B0B1B2B3……Bn-2Bn-100RAM3……在進行A*B=C的破壞乘法后RAM1 A0A1A2A3……An-2An-100RAM2 C0C1C2……Cn-1CnCn+1RAM3 Cn+2Cn+3Cn+4……C2n-10000
將RAM2轉(zhuǎn)移到RAM1且將RAM2歸零RAM1 C0C1C2……Cn-1CnCn+1RAM2000000000000000000000000000000RAM3 Cn+2Cn+3Cn+4……C2n-10000將RAM3向右移位三個位置時將畢特數(shù)Cn-1到Cn+1引入RAM3的最左位置RAM1 C0C1C2……Cn-1CnCn+1RAM2000000000000000000000000000000RAM3 Cn-1CnCn+1Cn+2Cn+3……C2n-10用RAM3(即D=K*RAM3)破壞相乘K(在ROM中為n+1長度)RAM1 C0C1C2……Cn-1CnCn+1RAM2 D0D1D2……DnDn+1RAM3 Dn+2Dn+3Dn+4……D2n00將Dn+1推入RAM3的最左位且將RAM2設定為0
RAM1 C0C1C2……Cn-1CnCn+1RAM2000000000000000000000000000000RAM3 Dn+1Dn+2Dn+3……D2n0用RAM3(比方E=RAM3*X)乘X(在ROM13中以n長度存貯)。只進行部分相乘以便在RAM2中只獲得E的n+2最小有效數(shù)位RAM1 C0C1C2……Cn-1CnCn+1RAM2 E0E1E2……En-1EnEn+1從RAM1中減去RAM2(即F=RAM1-RAM2)RAM1 E0E1E2……En-1EnEn+1RAM2 E0E1E2……En-1EnEn+1當RAM1>X時,從RAM1中減去X(在ROM中為n長度)RAM1FINAL.RESULT……RAM2 E0E1E2……En-1EnEn+1
本發(fā)明裝置有利的是以這樣一個位置終止,即非常有利于進行另一個破壞乘法(在RAM2中放入另一個數(shù)且NEXT-NUMER*FINAL-RESUIT將出現(xiàn)在RAM2及RAM3)。這對于模的取是很不利的。
上面描述了L=2n的情形(最實際的),但是這個方法可以輕易地普及到任何L>n的值。
存貯在RAM行列和/或可檢索介質(zhì)13中的數(shù)字和/或數(shù)據(jù)也可以以倒置格式存貯(最大有效位與最小有效位互換)。
RAM1、RAM2和/或RAM3的次序也可置換。
代替為RAM歸零,這個RAM可以連續(xù)重寫。
可以用乘方和相乘算法控制器來進行這個乘法。
RAM行列可由右移位寄存器來取代。
用于模運算A*BmodX的裝置,這里數(shù)字A、B及第一常量X都是n字節(jié),這個裝置包括-可檢索裝置(13),如RAM,ROM或E2PROM,在其中已記錄了所說第一常量X及第二常量K=22n/X;
-3*(int(n/8)+1)字節(jié)的RAM矩陣,它包含第一組RAM1存貯單元,第二組RAM2存貯單元及第二組存貯單元;
-運算裝置(11),它允許對存貯在所說RAM行列中數(shù)據(jù)的多位減法,多位移位運算,多位數(shù)據(jù)從或向所說可檢索裝置及所說RAM矩陣的轉(zhuǎn)移,多位完全的和破壞的乘法。
其特征在于用所說運算裝置(11)的運算是以二元數(shù)位(binaryortrinorrynumbers)進行的。
該裝置用于模運算A*BModX的方法,包括下列步驟-在所說第一組RAM1存貯單元及所說第二組RAM存貯細胞中分別存貯所說數(shù)字A和B;
-進行破壞乘法A*B=C;
-將存貯在所說第二組RAM2存貯單元的數(shù)據(jù)(C的最小二進制有效數(shù)位)轉(zhuǎn)移到所說第一組RAM1存貯單元,
-將所說第二組RAM2存貯單元歸零;
-將存貯在所說第三組RAM3存貯單元中的數(shù)據(jù)(C是最大二進制有效數(shù)位)向右移位三個位置,這個數(shù)據(jù)以Ci代表,其中i是畢特且i=0最小二進制有效數(shù)位,同時將三個最右位畢特Cn-1′Cn及Cn+1引入所說第三組RAM3的存貯單元的最左位置(即最小二進制有效數(shù)位);
-用存貯在所說第三組RAM3的存貯單元中的數(shù)據(jù)破壞相乘所說第二常量K,K在所說可檢索裝置(13)中以n+1畢特的長度存貯;
-將存貯在所說第二組RAM2存貯單元中的最右位畢特以Dn+1′表示推向第三組RAM3存貯單元中的最左位;
-將所說第二組RAM2存貯單元歸零;
-用存貯在所說第三組RAM3存貯單元來部分相乘所說第一常數(shù)X,X在所說可檢索裝置(13)中以n畢特的長度存貯,由此在所說第二組RAM2存貯單元中只獲得n+2的最小二進制有效數(shù)位;
-從存貯在所說第一組RAM1存貯單元的數(shù)字中減去存貯在所說第二組RAM2存貯單元的數(shù)字;
-當存貯在所說第一組RAM1存貯單元中的數(shù)字大于所說第一常數(shù)X時,從存貯在所說第一組RAM1存貯單元中減去所說第一常數(shù)X。
其特征在于有貯在RAM矩陣和/或存貯在可檢索裝置(13)中的數(shù)字和/或數(shù)據(jù)以倒置格式存貯(MSB…LSB)。
其特征在于所說第一、二和/或三所存貯單元的次序被置換。
其特征在于代替為所說各個組存貯單元歸零,各個組存貯單元被連續(xù)重寫。
其特征在于所說乘法是用乘方及乘法算法控制器(square-and-multiplyalgcrithmiccohteiller)來進行的。
其特征在于所說RAM矩陣被右移位寄存器所取代。
其特征在于所說裝置是視頻密碼(Videocrypt)解碼器。
權利要求
1.用于模運算A*B mod X的裝置,這里數(shù)字A、B及第一常量X都是n字節(jié),這個裝置包括--可檢索裝置(13),如RAM,ROM或E2PROM,在其中已記錄了所說第一常量X及第二常量K=22n/X;--3*(int(n/8)+1)字節(jié)的RAM矩陣,它包含第一組RAM1存貯單元,第二組RAM2存貯單元及第二組存貯單元;--運算裝置(11),它允許對存貯在所說RAM行列中數(shù)據(jù)的多位減法,多位移位運算,多位數(shù)據(jù)從或向所說可檢索裝置及所說RAM矩陣的轉(zhuǎn)移,多位完全的和破壞的乘法。
2.根據(jù)權利要求1的裝置,其特征在于用所說運算裝置(11)的運算是以二元或三元數(shù)位(binary or trinorry numbers)進行的。
3.利用根據(jù)權利要求1或2的裝置用于模運算A*B Mod X的方法,包括下列步驟-在所說第一組RAM1存貯單元及所說第二組RAM存貯細胞中分別存貯所說數(shù)字A和B;-進行破壞乘法A*B=C;-將存貯在所說第二組RAM2存貯單元的數(shù)據(jù)(C的最小二進制有效數(shù)位)轉(zhuǎn)移到所說第一組RAM1存貯單元,-將所說第二組RAM2存貯單元歸零;-將存貯在所說第三組RAM3存貯單元中的數(shù)據(jù)(C是最大二進制有效數(shù)位)向右移位三個位置,這個數(shù)據(jù)以Ci代表,其中i是畢特且i=0最小二進制有效數(shù)位,同時將三個最右位畢特Cn-1′Cn及Cn+1引入所說第三組RAM3的存貯單元的最左位置(即最小二進制有效數(shù)位);-用存貯在所說第三組RAM3的存貯單元中的數(shù)據(jù)破壞相乘所說第二常量K,K在所說可檢索裝置(13)中以n+1畢特的長度存貯;-將存貯在所說第二組RAM2存貯單元中的最右位畢特以Dn+1′表示推向第三組RAM3存貯單元中的最左位;-將所說第二組RAM2存貯單元歸零;-用存貯在所說第三組RAM3存貯單元來部分相乘所說第一常數(shù)X,X在所說可檢索裝置(13)中以n畢特的長度存貯,由此在所說第二組RAM2存貯單元中只獲得n+2的最小二進制有效數(shù)位;-從存貯在所說第一組RAM1存貯單元的數(shù)字中減去存貯在所說第二組RAM2存貯單元的數(shù)字;-當存貯在所說第一組RAM1存貯單元中的數(shù)字大于所說第一常數(shù)X時,從存貯在所說第一組RAM1存貯單元中減去所說第一常數(shù)X。
4.根據(jù)權利要求3的方法,其特征在于有貯在RAM矩陣和/或存貯在可檢索裝置(13)中的數(shù)字和/或數(shù)據(jù)以倒置格式存貯(MSB…LSB)。
5.根據(jù)權利要求3或4的方法,其特征在于所說第一、二和/或三所存貯單元的次序被置換。
6.根據(jù)權利要求3到5的任何一種方法,其特征在于代替為所說各個組存貯單元歸零,各個組存貯細胞被連續(xù)重寫。
7.根據(jù)權利要求3到6的任何一種方法,其特征在于所說乘法是用乘方及乘法算法控制器(square-and-multiply algorithmic cohtroller)來進行的。
8.根據(jù)權利要求3到7的任何一種方法,其特征在于所說RAM矩陣被右移位寄存器所取代。
9.根據(jù)權利要求1或2的裝置,其特征在于所說裝置是視頻密碼(Videocrypt)解碼器。
全文摘要
具有減少的RAM空間的快速模計算。現(xiàn)代密碼通信常需要模運算。在1990RAIRO-OR,(3)上由D.Naccache,H.M′Silti發(fā)表了“一種新模計算算法”。但小型密碼裝置中,不能使用大量的RAM存貯器。特殊執(zhí)行過程可有效運算模函數(shù)。由此計算R=Y mod X只需大約3倍于X尺寸的RAM。如果X和常數(shù)K存貯在可檢索裝置上如ROM,則微控制器或微處理器中也無需除法。
文檔編號G06F7/72GK1070298SQ92104800
公開日1993年3月24日 申請日期1992年5月26日 優(yōu)先權日1991年5月27日
發(fā)明者大衛(wèi)·納卡什 申請人:湯姆森電子用品公司