本申請涉及數(shù)據(jù)加密領域,尤其涉及一種rsa加解密處理方法和裝置。
背景技術:
rsa算法是1977年由羅納德·李維斯特(ronrivest)、阿迪·薩莫爾(adishamir)和倫納德·阿德曼(leonardadleman)一起提出的。1987年首次公布,當時他們?nèi)硕荚诼槭±砉W院工作。rsa就是他們?nèi)诵帐祥_頭字母拼在一起組成的。
rsa算法是目前最有影響力的公鑰加密算法,它能夠抵抗到目前為止已知的絕大多數(shù)密碼攻擊,已被iso推薦為公鑰數(shù)據(jù)加密標準。
rsa算法基于一個十分簡單的數(shù)論事實:將兩個大質數(shù)相乘十分容易,但是想要對其乘積進行因式分解卻極其困難,因此可以將乘積公開作為加密密鑰。
處理rsa算法的傳統(tǒng)方式是通過軟件來處理。但是通過軟件處理rsa算法,在加解密過程中,運算量非常大,需要加大芯片級系統(tǒng)soc(systemonchip)的ram空間才能通過軟件處理rsa算法。而且通過軟件處理rsa算法,其運算速率較慢,在系統(tǒng)時鐘較慢的soc上,通過軟件處理rsa算法一般無法在規(guī)定的時間內(nèi)完成運算。替代地,采用硬件電路處理rsa算法可以大大提升rsa算法的運算速率。
用硬件電路處理rsa算法,其核心是需要根據(jù)c=memodn運算生成密文,根據(jù)m=cdmodn運算生成明文,式中,c為密文,m為明文,(e,n)為rsa公鑰,(d,n)為rsa密鑰。
現(xiàn)有的利用硬件電路處理rsa算法的方法中,運算明文和密文的方式是先直接求出乘冪,然后再求出乘冪對n的模,但是,這種運算方式由于要進行模冪運算,運算量非常大,尤其是當m、n為比較大的數(shù)值時,用硬件電路實現(xiàn)需要占用大量的硬件資源,而且運算耗時非常長,無法在規(guī)定的時間內(nèi)利用有限的硬件資源處理完rsa算法。
技術實現(xiàn)要素:
有鑒于此,本申請?zhí)峁┝艘环Nrsa加解密處理方法和裝置,以減少rsa加解密過程中的運算量,實現(xiàn)rsa算法在規(guī)定的時間內(nèi)利用有限的硬件資源處理完成。
為了解決上述技術問題,本申請采用了如下技術方案:
一種rsa加密處理方法,包括:
獲取rsa公鑰以及明文m,所述rsa公鑰為e和n;
判斷e是否大于0;
當e大于0時,判斷e是否為偶數(shù);
當e為偶數(shù)時,更新e值以及通過模乘運算更新明文m,其中,e=e/2,m=m*mmodn;返回執(zhí)行所述判斷e是否大于0的步驟;
當e為奇數(shù)時,更新e值以及通過模乘運算更新第一中間變量d,其中,e=e-1,d=d*mmodn,返回執(zhí)行所述判斷e是否大于0的步驟;設定d的初始值等于1;
當e=0時,輸出第一中間變量d值,輸出的d值為rsa密文;
其中,所述模乘運算包括:乘運算和對所述乘運算的乘積采用移位相減的方式進行取模運算。
可選地,設定所述乘運算的乘積為x,所述對所述乘運算的乘積采用移位相減的方式進行取模運算,具體包括:
將n向左移位,判斷左移位后的n的位寬與x位寬的差值是否在預設范圍內(nèi),直到左移位后的n的位寬與x的位寬的差值在預設范圍內(nèi);
比較x和n的大小關系,當x大于n時,通過x=x-n的減法運算更新x,并將n逐位向右移位,直到右移后的n的值恢復到左移之前的n的初始值,將最后一次更新后的x值確定為取模結果。
可選地,所述將n向左移位,判斷左移位后的n的位寬與x位寬的差值是否在預設范圍內(nèi),直到左移位后的n的位寬與x的位寬的差值在預設范圍內(nèi),具體包括:
設定一第二中間變量a,并且設定a的初始值等于n,即a=n;
判斷x是否大于或等于2a;
當x≥2a時,將a左移一位,即a=2a,返回執(zhí)行所述判斷x是否大于或等于2a的步驟,直至x<2a。
可選地,所述比較x和n的大小關系,當x大于n時,通過x=x-n的減法運算更新x,并將n按位向右移位,直到n的值恢復到左移之前的n的初始值,將最后更新后的x值確定為取模結果,具體包括:
當x<2a時,判斷x是否大于或等于a;
當x≥a時,更新x和a的值,其中,x=x-a,a=a/2;
判斷a是否等于n;
當a=n時,輸出x值,x值作為取模結果,結束取模運算;
當a不等于n時,返回執(zhí)行判斷x是否大于或等于a的步驟;
當x<a時,更新a的值,其中,設定a=a/2,返回執(zhí)行判斷a是否等于n。
一種rsa加密處理裝置,包括:
輸入單元,用于輸入rsa公鑰以及明文m,所述rsa公鑰為e和n;
第一判斷單元,用于判斷e是否大于0;
第二判斷單元,用于當e大于0時,判斷e是否為偶數(shù);
第一更新單元,用于當e為偶數(shù)時,更新e值,并觸發(fā)所述第一判斷單元,其中,e=e/2;
第一模乘運算單元,用于當e為偶數(shù)時,通過模乘運算更新明文m,m=m*mmodn;
第二更新單元,用于當e為奇數(shù)時,更新e值,并觸發(fā)所述第一判斷單元,其中,e=e-1;
第二模乘運算單元,用于當e為奇數(shù)時,更新第一中間變量d,并觸發(fā)所述第一判斷單元,其中,d=d*mmodn,d的初始值等于1;
輸出單元,用于當e=0時,輸出第一中間變量d值,輸出的d值為rsa密文;
其中,所述第一模乘運算單元和/或所述第二模乘運算單元均分別包括:乘運算子單元和對所述乘運算的乘積采用移位相減的方式進行取模運算的取模運算子單元。
可選地,所述取模運算子單元包括:
左移位子單元,用于將n向左移位;
判斷子單元,用于判斷左移位后的n的位寬與x位寬的差值是否在預設范圍內(nèi),若判斷結果為否,觸發(fā)所述左移位子單元,直到左移位后的n的位寬與x的位寬的差值在預設范圍內(nèi);
比較子單元,用于若判斷結果為是,比較x和n的大小關系;
減法運算子單元,用于當x>n時,通過x=x-n的減法運算更新x;
右移位子單元,用于當x>n時,將n逐位向右移位,并觸發(fā)所述比較子單元,直到右移后的n值恢復到左移之前的n的初始值;
確定子單元,用于當右移后的n值恢復到左移之前的n的初始值時,將最后一次更新后的x值確定為取模結果。
一種rsa解密處理方法,包括:
獲取rsa私鑰以及密文c,所述rsa私鑰為d和n;
判斷d是否大于0;
當d大于0時,判斷d是否為偶數(shù);
當d為偶數(shù)時,更新d值以及通過模乘運算更新密文c,其中,d=d/2,c=c*cmodn;返回執(zhí)行所述判斷d是否大于0的步驟;
當d為奇數(shù)時,更新d值以及通過模乘運算更新第二中間變量d’,其中,d=d-1,d'=d'*cmodn,返回執(zhí)行所述判斷d是否大于0的步驟;設定d’的初始值等于1;
當d=0時,輸出第二中間變量d’值,輸出的d’值為rsa明文;
其中,所述模乘運算包括:乘運算和對所述乘運算的乘積采用移位相減的方式進行取模運算。
可選地,設定所述乘運算的乘積為x’,所述對所述乘運算的乘積采用移位相減的方式進行取模運算,具體包括:
將n向左移位,判斷左移位后的n的位寬與x’位寬的差值是否在預設范圍內(nèi),直到左移位后的n的位寬與x’的位寬的差值在預設范圍內(nèi);
比較x’和n的大小關系,當x’大于n時,通過x’=x’-n的減法運算更新x’,并將n逐位向右移位,直到右移后的n的值恢復到左移之前的n的初始值,將最后一次更新后的x’值確定為取模結果。
一種rsa解密處理裝置,包括:
獲取單元,用于獲取rsa私鑰以及密文c,所述rsa私鑰為d和n;
第一判斷單元,用于判斷d是否大于0;
第二判斷單元,用于當d大于0時,判斷d是否為偶數(shù);
第一更新單元,用于當d為偶數(shù)時,更新d值并觸發(fā)所述第一判斷單元,其中,d=d/2;
第一模乘運算單元,用于通過模乘運算更新密文c,并觸發(fā)所述第一判斷單元,其中,c=c*cmodn;
第二更新單元,用于當d為奇數(shù)時,更新d值并觸發(fā)所述第一判斷單元,其中,d=d-1;
第二模乘運算單元,用于當d為奇數(shù)時,通過模乘運算更新第二中間變量d’,并觸發(fā)所述第一判斷單元,其中,d'=d'*cmodn,設定d’的初始值等于1;
輸出單元,用于當d=0時,輸出第二中間變量d’值,輸出的d’值為rsa明文;
其中,所述第一模乘運算單元和/或所述第二模乘運算單元均分別包括:乘運算子單元和對所述乘運算的乘積采用移位相減的方式進行取模運算的取模運算子單元。
可選地,所述取模運算子單元包括:
左移位子單元,用于將n向左移位;
判斷子單元,用于判斷左移位后的n的位寬與x’位寬的差值是否在預設范圍內(nèi),若判斷結果為否,觸發(fā)所述左移位子單元,直到左移位后的n的位寬與x’的位寬的差值在預設范圍內(nèi);
比較子單元,用于若判斷結果為是,比較x’和n的大小關系;
減法運算子單元,用于當x’>n時,通過x’=x’-n的減法運算更新x’;
右移位子單元,用于當x’>n時,將n逐位向右移位,并觸發(fā)所述比較子單元,直到右移后的n值恢復到左移之前的n的初始值;
確定子單元,用于當右移后的n值恢復到左移之前的n的初始值時,將最后一次更新后的x’值確定為取模結果。
相較于現(xiàn)有技術,本申請具有以下有益效果:
本申請?zhí)峁┑膔sa加解密處理方法中,無需直接計算乘冪,而是將密文和明文計算公式中的乘冪逐步化簡為模乘運算,并且對每步模乘運算均采用移位相減的取模方法對乘積進行取模運算,將對最后一步化簡到的模乘運算進行取模運算得到的取模結果作為rsa密文和明文。
在本申請?zhí)峁┑膔sa加解密處理方法中,在取模運算過程中,通過左移位的方法將n的位寬與乘積的位寬的差值縮小到預設范圍內(nèi),再采用減法運算以及右移位的方法進行取模運算,該取模運算過程運算量較小,耗時較短,如此提高了rsa加解密過程的處理速率,縮短了運算時間,從而使得rsa算法能夠在規(guī)定的時間內(nèi)利用有限的硬件資源處理完成。
附圖說明
為了清楚地理解本申請的具體實施方式,下面將描述本申請具體實施方式時用到的附圖做一簡要說明。顯而易見地,這些附圖僅是本申請的部分實施例。
圖1是本申請實施例提供的rsa加密處理方法流程示意圖;
圖2是本申請實施例提供的取模運算實現(xiàn)方式的流程示意圖;
圖3是本申請實施例提供的rsa加密處理方法的一個示例的流程示意圖;
圖4是本申請實施例提供的rsa加密處理裝置結構示意圖;
圖5是本申請實施例提供的取模運算子單元的結構示意圖;
圖6是本申請實施例提供的rsa解密處理方法流程示意圖;
圖7是本申請實施例提供的取模運算實現(xiàn)方式的流程示意圖;
圖8是本申請實施例提供的rsa解密處理裝置結構示意圖。
具體實施方式
為了減少rsa加解密過程中的運算量,實現(xiàn)rsa算法在規(guī)定的時間內(nèi)利用有限的硬件資源處理完成,本申請?zhí)峁┑膔sa加解密處理方法中,將生成加密明文的計算公式c=memodn和生成解密明文的計算公式m=cdmodn中的模冪運算逐步化簡為模乘運算,然后對每步化簡的模乘運算利用移位相減的方法進行取模運算,直到消掉模冪運算中的冪運算。在取模運算過程中,通過左移位的方法將n的位寬與乘積的位寬的差值縮小到預設范圍內(nèi),再采用減法運算以及右移位的方法進行取模運算,該取模運算過程運算量較小,耗時較短,如此提高了rsa加解密過程的處理速率,縮短了運算時間,從而使得rsa算法能夠在規(guī)定的時間內(nèi)利用有限的硬件資源處理完成。
下面結合附圖對本申請的具體實施方式進行詳細描述。
圖1是本申請實施例提供的rsa加密處理方法流程示意圖。如圖1所示,該生成方法包括以下步驟:
s101、獲取rsa公鑰(e,n)以及明文m。
為了提高安全性,公鑰e和n的數(shù)值較大。在rsa算法應用過程中,n的值位寬一般都在512比特以上。
s102、判斷e是否大于0。
s103、當e大于0時,判斷e是否為偶數(shù)。
s104、當e為偶數(shù)時,更新e值以及通過模乘運算更新明文m,其中,e=e/2,m=m*mmodn;返回執(zhí)行步驟s102;
s105、當e為奇數(shù)時,更新e值以及通過模乘運算更新第一中間變量d,其中,e=e-1,d=d*mmodn,返回執(zhí)行步驟s102;設定d的初始值等于1;
s106、當e=0時,輸出第一中間變量d值,輸出的d值為rsa密文。
其中,所述模乘運算可以具體包括:首先進行乘運算得到乘積x,然后再對乘積x采用移位相減的方式進行取模運算。
其中,乘運算比較簡單,采用本領域管用的技術手段即可。
然而,取模運算的常規(guī)運算方式一般是通過試商的方法來實現(xiàn)。例如在計算xmodn時,首先比較x與n的大小關系,當x≥n時,更新x值,其中,x=x-n,返回執(zhí)行所述判斷x是否大于n;當x<n時,將x作為數(shù)據(jù)x對n的模。也就是說,采用試商的方法計算xmodn時,如果x≥n,設定x=x-n,一直循環(huán)減下去,直至x<n為止。這種取模運算方法在x和n的位寬較小的時候很實用,而且很方便,但是,如果x和n的位寬都很大的情況下,這種運算方式就非常地耗時,很難滿足rsa算法時間要求。
為了提高取模運算的運算效率,使得rsa算法在規(guī)定時間內(nèi)完成,本申請可以采用移位相減的方法對所述乘積x進行取模運算得到取模結果。
采用移位相減的方法對乘積x進行取模運算得到取模結果可以具體包括以下步驟:
步驟a:將n向左移位,判斷左移位后的n的位寬與x位寬的差值是否在預設范圍內(nèi),直到左移位后的n的位寬與x的位寬的差值在預設范圍內(nèi);
步驟b:比較x和n的大小關系,當x大于n時,通過x=x-n的減法運算更新x,并將n逐位向右移位,直到右移后的n的值恢復到左移之前的n的初始值,將最后一次更新后的x值確定為取模結果。
作為示例,采用移位相減的方法對所述乘積x進行取模運算得到取模結果的具體實現(xiàn)方式如圖2所示,其包括以下步驟:
s201、設定一中間變量a,并且設定a的初始值等于n,即a=n。
s202、判斷x是否大于或等于2a,如果是,執(zhí)行步驟s203,如果否,執(zhí)行步驟s204。
s203、將a左移一位,即a=2a,返回執(zhí)行步驟s202。
在計算機中,數(shù)值一般是以二進制的形式存在。在本申請實施例中,將中間變量a整體向左移動一位,并在最后一位上補0。作為示例,以中間變量a為1101b為例說明。將a左移一位,更新后的a為11010b。
s204、判斷x是否大于或等于a,如果是,執(zhí)行步驟s205,如果否,執(zhí)行步驟s206。
s205、當x≥a時,更新x的值,其中,x=x-a。
s206、判斷a是否等于n,如果是,執(zhí)行步驟s207,如果否,返回執(zhí)行步驟s208。
s207、當a=n時,x值即為取模結果,結束取模運算;
s208、當a≠n時,更新a的值,更新a值具體通過將a右移一位,即a=a/2實現(xiàn),返回執(zhí)行步驟s204。
以上為本申請實施例提供的移位相減的取模運算方法的具體實施方式。
其中,步驟s201至s203為上述步驟a的一種可能的具體實現(xiàn)方式。步驟s204至s208為上述步驟b的一種可能的具體實現(xiàn)方式。
通過該具體實施方式,能夠將取模運算轉換為較少的減法運算,從而大大降低了取模運算的復雜度,進而能夠利用有限的硬件資源在規(guī)定的時間內(nèi)處理完成rsa加密算法。
為了更清楚地理解本申請?zhí)峁┑膔sa加密處理方法的具體實施方式,下面以e=4為例說明本申請?zhí)峁┑膔sa加密處理方法的具體實現(xiàn)方式,該示例的實現(xiàn)過程可以如圖3所示,其包括以下步驟:
s301、初始化中間變量d的值,設定d的初始值等于1。
s302、獲取rsa公鑰(e,n)以及明文m。
s303、判斷4是否大于0,如果是,執(zhí)行步驟s304。
根據(jù)數(shù)學基礎知識可知4>0,判斷結果為是,因此,執(zhí)行步驟s304。
s304、判斷4是否為偶數(shù),如果是,執(zhí)行步驟s305。
根據(jù)數(shù)學基礎知識可知,4為偶數(shù),判斷結果為是,所以,執(zhí)行步驟s305。
s305、更新e值以及通過模乘運算更新m值,其中,e=e/2=4/2=2,m=m*mmodn。
在本申請實施例中,通過模乘運算更新m值,具體可以如下:先計算模乘運算m*mmodn中的乘運算m*m,得到乘積a;再利用移位相減的取模運算方式對所述乘積a進行取模運算得到取模結果,得到的取模結果即為更新后的m值。
s306、判斷2是否大于0,如果是,執(zhí)行步驟s307。
根據(jù)數(shù)學基礎知識可知,2>0,判斷結果為是,執(zhí)行步驟s307。
s307、判斷2是否為偶數(shù),如果是,執(zhí)行步驟s308。
根據(jù)數(shù)學基礎知識可知,2為偶數(shù),判斷結果為是,執(zhí)行步驟s308。
s308、更新e值以及通過模乘運算更新m值,其中,e=e/2=2/2=1,m=m*mmodn。
s309、判斷1是否大于0,如果是,執(zhí)行步驟s310。
根據(jù)數(shù)學基礎知識可知,1>0,判斷結果為是,執(zhí)行步驟s310。
s310、判斷1是否為偶數(shù),判斷結果為否,執(zhí)行步驟s311。
根據(jù)數(shù)學基礎知識可知,1為奇數(shù),判斷結果為否,執(zhí)行步驟s311。
s311、更新e值以及通過模乘運算更新d值,其中,e=e-1=1-1=0,d=d*mmodn=1*mmodn=mmodn。
在本申請實施例中,通過模乘運算更新d值,具體可以如下:先計算模乘運算d*mmodn中的乘運算d*m,得到乘積b;然后再對所述乘積b進行取模運算得到取模結果,得到的取模結果即為更新后的d值。
s312、判斷0是否大于0,如果否,執(zhí)行步驟s313。
根據(jù)數(shù)學基礎知識可知,0=0,判斷結果為否,執(zhí)行步驟s313。
s313、輸出d值,輸出的d值作為rsa加密密文,然后結束運算。
以上為本申請實施例提供的rsa加密處理方法的具體實施方式,在本申請?zhí)峁┑膔sa加密處理方法中,無需計算乘冪,而是將密文計算公式中的乘冪逐步化簡為模乘運算,并且對每步模乘運算均采用移位相減的取模方法對乘積進行取模運算,將對最后一步化簡到的模乘運算進行模運算得到的取模結果作為rsa密文。在取模運算過程中,通過左移位的方法將n的位寬與乘積的位寬的差值縮小到預設范圍內(nèi),再采用減法運算以及右移位的方法進行取模運算,該取模運算過程運算量較小,耗時較短,如此提高了rsa加密過程的處理速率,縮短了運算時間,從而使得rsa算法能夠在規(guī)定的時間內(nèi)利用有限的硬件資源處理完成。
通過驗證用硬件處理rsa加密算法,在e位寬為24比特,n位寬為1024比特的情況下,模乘運算用0.13μm工藝綜合之后面積為49萬平方微米,考慮到最差的情況,計算一次memodn(m取最大值,e取最大值,n取最小值2)需要時間為(2048+4)*256*24=12,607,488個時鐘周期,如果采用30mhz的系統(tǒng)時鐘最差的情況需要0.4s,可以滿足絕大部分rsa算法的時間要求。因而,通過該方法,可以用很少的數(shù)字邏輯面積并且可以保持較快的運算速率,因此,該方法解決了通過硬件實現(xiàn)rsa算法需要占用大量的硬件資源而且運算耗時非常長的問題。
以上為本申請實施例提供的rsa加密處理方法的具體實施方式?;谏鲜鰧嵤├峁┑膔sa加密處理方法的具體實施方式,本申請實施例還提供了rsa加密處理裝置的具體實施方式。圖4是本申請實施例提供的rsa加密處理裝置結構示意圖。如圖4所示,該rsa加密處理裝置包括:
輸入單元41,用于輸入rsa公鑰以及明文m,所述rsa公鑰為e和n;
第一判斷單元42,用于判斷e是否大于0;
第二判斷單元43,用于當e大于0時,判斷e是否為偶數(shù);
第一更新單元44,用于當e為偶數(shù)時,更新e值。并觸發(fā)所述第一判斷單元,其中,e=e/2;
第一模乘運算單元45,用于當e為偶數(shù)時,通過模乘運算更新明文m,m=m*mmodn;
第二更新單元46,用于當e為奇數(shù)時,更新e值,并觸發(fā)所述第一判斷單元,其中,e=e-1;
第二模乘運算單元47,用于當e為奇數(shù)時,更新第一中間變量d,并觸發(fā)所述第一判斷單元,其中,d=d*mmodn,d的初始值等于1;
輸出單元48,用于當e=0時,輸出第一中間變量d值,輸出的d值為rsa密文;
其中,所述第一模乘運算單元45和/或所述第二模乘運算單元47均分別包括:乘運算子單元和對所述乘運算的乘積采用移位相減的方式進行取模運算的取模運算子單元。
其中,如圖5所示,取模運算子單元可以具體包括:
左移位子單元51,用于將n向左移位;
判斷子單元52,用于判斷左移位后的n的位寬與x位寬的差值是否在預設范圍內(nèi),若判斷結果為否,觸發(fā)所述左移位子單元51,直到左移位后的n的位寬與x的位寬的差值在預設范圍內(nèi);
比較子單元53,用于若判斷結果為是,比較x和n的大小關系;
減法運算子單元54,用于當x>n時,通過x=x-n的減法運算更新x;
右移位子單元55,用于當x>n時,將n逐位向右移位,并觸發(fā)所述比較子單元,直到右移后的n值恢復到左移之前的n的初始值;
確定子單元56,用于當右移后的n值恢復到左移之前的n的初始值時,將最后一次更新后的x值確定為取模結果。
需要說明,本申請實施例提供的rsa加密處理裝置可以為由硬件電路組成的裝置。其中,輸入單元41和輸出單元48可以為數(shù)據(jù)輸入/輸出接口。第一判斷42和第二判斷單元43可以為比較器。第一模乘運算單元45和第二模乘運算單元47可以為模乘運算器。作為一示例,第一模乘運算單元45和第二模乘運算單元47可以為同一模乘運算單元,該模乘運算單元對不同的輸入數(shù)據(jù)進行模乘運算。本申請實施例提供的rsa加密處理裝置能夠大大降低rsa加密處理過程所需的運算時間。
基于與rsa加密處理方法相同的工作原理,本申請還提供了rsa解密處理方法的具體實施方式。具體參見以下實施例。
圖6是本申請實施例提供的一種rsa解密處理方法流程示意圖。如圖6所示,該rsa解密處理方法包括:
s601、獲取rsa私鑰以及密文c,所述rsa私鑰為d和n。
s602、判斷d是否大于0。
s603、當d大于0時,判斷d是否為偶數(shù)。
s604、當d為偶數(shù)時,更新d值以及通過模乘運算更新密文c,其中,d=d/2,c=c*cmodn';返回執(zhí)行步驟s602。
s605、當d為奇數(shù)時,更新d值以及通過模乘運算更新第二中間變量d’,其中,d=d-1,d'=d'*cmodn',返回執(zhí)行步驟s602;設定d’的初始值等于1;
s606、當d=0時,輸出第二中間變量d’值,輸出的d’值為rsa明文;
其中,所述模乘運算包括:乘運算和對所述乘運算的乘積采用移位相減的方式進行取模運算。
其中,所述模乘運算可以具體包括:首先進行乘運算得到乘積x’,然后再對乘積x’采用移位相減的方式進行取模運算。
為了提高取模運算的運算效率,使得rsa算法在規(guī)定時間內(nèi)完成,本申請可以采用移位相減的方法對所述乘積x’對n進行取模運算得到取模結果。
采用移位相減的方法對乘積x’對n進行取模運算得到取模結果可以具體包括以下步驟:
步驟a’:將n向左移位,判斷左移位后的n的位寬與x’位寬的差值是否在預設范圍內(nèi),直到左移位后的n的位寬與x’的位寬的差值在預設范圍內(nèi);
步驟b’:比較x’和n的大小關系,當x’大于n時,通過x’=x’-n的減法運算更新x’,并將n逐位向右移位,直到右移后的n的值恢復到左移之前的n的初始值,將最后一次更新后的x’值確定為取模結果。
作為示例,采用移位相減的方法對所述乘積x’進行取模運算得到取模結果的具體實現(xiàn)方式如圖7所示,其包括以下步驟:
s701、設定一中間變量a,并且設定a的初始值等于n,即a=n。
s702、判斷x’是否大于或等于2a,如果是,執(zhí)行步驟s703,如果否,執(zhí)行步驟s704。
s703、將a左移一位,即a=2a,返回執(zhí)行步驟s702。
在計算機中,數(shù)值一般是以二進制的形式存在。在本申請實施例中,將中間變量a整體向左移動一位,并在最后一位上補0。作為示例,以中間變量a為1101b為例說明。將a左移一位,更新后的a為11010b。
s704、判斷x’是否大于或等于a,如果是,執(zhí)行步驟s705,如果否,執(zhí)行步驟s706。
s705、當x’≥a時,更新x’和a的值,其中,x’=x’-a。
s706、判斷a是否等于n,如果是,執(zhí)行步驟s707,如果否,返回執(zhí)行步驟s708;
s707、當a=n時,x’值即為取模結果,結束取模運算;
s708、當a≠n時,更新a的值,其中,設定a=a/2,返回執(zhí)行步驟s704。
其中,步驟s701至s703為上述步驟a’的一種可能的具體實現(xiàn)方式。步驟s704至s708為上述步驟b’的一種可能的具體實現(xiàn)方式。
需要說明,圖7所示的取模運算過程與圖2所示的取模運算過程相同,其不同之處僅在于數(shù)據(jù)不同。
以上為本申請實施例提供的rsa解密處理方法的具體實施方式,在本申請?zhí)峁┑膔sa解密處理方法中,無需計算乘冪,而是將明文計算公式中的乘冪逐步化簡為模乘運算,并且對每步模乘運算均采用移位相減的取模方法對乘積進行取模運算,將對最后一步化簡到的模乘運算進行取模運算得到的取模結果作為rsa明文。在取模運算過程中,通過移位的方法將n的位寬與乘積的位寬的差值縮小到預設范圍內(nèi),再采用減法運算以及右移位的方法進行取模運算,該取模運算過程運算量較小,耗時較短,如此提高了rsa解密過程的處理速率,縮短了運算時間,從而使得rsa算法能夠在規(guī)定的時間內(nèi)利用有限的硬件資源處理完成。
以上為本申請實施例提供的rsa解密處理方法的具體實施方式?;谏鲜鰧嵤├峁┑膔sa解密處理方法的具體實施方式,本申請實施例還提供了rsa解密處理裝置的具體實施方式。圖8是本申請實施例提供的rsa解密處理裝置結構示意圖。如圖8所示,該rsa解密處理裝置包括:
獲取單元81,用于獲取rsa私鑰以及密文c,所述rsa私鑰為d和n;
第一判斷單元82,用于判斷d是否大于0;
第二判斷單元83,用于當d大于0時,判斷d是否為偶數(shù);
第一更新單元84,用于當d為偶數(shù)時,更新d值并觸發(fā)所述第一判斷單元,其中,d=d/2;
第一模乘運算單元85,用于通過模乘運算更新密文c,并觸發(fā)所述第一判斷單元,其中,c=c*cmodn;
第二更新單元86,用于當d為奇數(shù)時,更新d值并觸發(fā)所述第一判斷單元,其中,d=d-1;
第二模乘運算單元87,用于當d為奇數(shù)時,通過模乘運算更新第二中間變量d’,并觸發(fā)所述第一判斷單元,其中,d'=d'*cmodn,設定d’的初始值等于1;
輸出單元88,用于當d=0時,輸出第二中間變量d’值,輸出的d’值為rsa明文;
其中,所述第一模乘運算單元85和/或所述第二模乘運算單元88均分別包括:乘運算子單元和對所述乘運算的乘積采用移位相減的方式進行取模運算的取模運算子單元。
作為一具體示例,所述取模運算子單元包括:
左移位子單元,用于將n向左移位;
判斷子單元,用于判斷左移位后的n的位寬與x’位寬的差值是否在預設范圍內(nèi),若判斷結果為否,觸發(fā)所述左移位子單元,直到左移位后的n的位寬與x’的位寬的差值在預設范圍內(nèi);
比較子單元,用于若判斷結果為是,比較x’和n的大小關系;
減法運算子單元,用于當x’>n時,通過x’=x’-n的減法運算更新x’;
右移位子單元,用于當x’>n時,將n逐位向右移位,并觸發(fā)所述比較子單元,直到右移后的n值恢復到左移之前的n的初始值;
確定子單元,用于當右移后的n值恢復到左移之前的n的初始值時,將最后一次更新后的x’值確定為取模結果。
需要說明,在本申請實施例中的取模運算子單元與上述rsa加密處理裝置中的取模運算子單元的結構相同,其不同之處在于,本申請施例中的取模運算子單元是對乘積x’進行取模運算。
需要說明,本申請實施例提供的rsa解密處理裝置可以為由硬件電路組成的裝置。本申請實施例提供的rsa加密處理裝置能夠大大降低rsa加密處理過程所需的運算時間。
以上僅為本申請的實施例而已,并不用于限制本申請。對于本領域技術人員來說,本申請可以有各種更改和變化。凡在本申請的精神和原理之內(nèi)所作的任何修改、等同替換、改進等,均應包含在本申請的權利要求范圍之內(nèi)。