一種實現sms4密碼算法中加解密處理的方法
2023-10-28 18:10:02 5
專利名稱:一種實現sms4密碼算法中加解密處理的方法
技術領域:
本發明主要應用於信息技術領域,具體涉及一種實現SMS4密碼算法中加解密處理的方法。
背景技術:
實現SMS4加密算法的關鍵部件是密鑰擴展部件和加解密部件。加解密部件主要由三部分構成,即數據寄存部件、常數陣列存儲部件、數據轉換部件。密鑰擴展部件與加解密部件的內部結構及處理過程基本相同。
數據寄存部件主要由通用觸發器構成,用於數據的寄存。在一個時鐘周期內,該部件所寄存的數據是不改變的。通用觸發器是在時鐘上沿或下沿把數據輸入端的數據輸至觸發器輸出端,而在其他時刻觸發器輸出端的數據不發生變化的數據暫存器件。
常數陣列存儲部件是存儲常數陣列的存儲部件。現有技術中的常數陣列一般是加解密處理之前已經準備好的寬度為32比特、深度為32的數據陣列。常數陣列存儲部件的數據按照地址的高低順序排列,可命名為rk0,rk1,…rk31。
數據轉換部件是按照密碼算法要求進行數據處理的部件。例如,按照國家的SMS4密碼算法要求進行數據處理,數據轉換部件完成的操作中只有一次密碼算法所規定的合成置換。
目前,按照SMS4密碼算法要求進行加解密數據處理的方法如下1)將外部數據輸入數據寄存部件。外部數據輸入到數據寄存部件後,數據寄存部件的輸出端輸出數據。例如,128bit的外部數據,分為4個32bit的數據,可分別命名為A0、A1、A2、A3。經數據寄存部件後輸出端的數據仍為128bit,分為4個32bit的數據,分別相應地命名為a0、a1、a2、a3。
2)進行數據轉換處理。將數據寄存部件的輸出端數據輸入數據轉換部件進行數據轉換處理。數據寄存部件的輸出端數據a0、a1、a2、a3經數據轉換部件轉換為128bit的數據C0、C1、C2、C3。
3)進行再次數據轉換處理。將前次數據轉換處理後的數據再次存至數據寄存部件,然後將數據寄存部件輸出端的數據再次輸入數據轉換部件,進行再次數據轉換。
4)重複再次數據轉換處理,得到最終的數據處理結果。對128bit的外部數據,再次數據轉換處理須循環處理30次。即數據轉換處理共要進行32次,才能得到最終的數據處理結果。
上述按照SMS4密碼算法要求進行加解密數據處理的方法存在如下缺點1.數據轉換處理的循環次數多。例如,加密128bit數據,至少需運行32個數據轉換處理周期才能得到最終數據處理結果。
2.加密效率低。加密效率即單位時間內加密的數據數量。加密128bit數據需數據轉換處理32次,由於目前實際應用中的時鐘頻率一般都較低,使得單位時間內加密的數據數量少,效率低。如果指定加密效率,則需提高時鐘頻率,而實際應用中的時鐘頻率往往無法提高,所以實際加密效率仍較低。
3.採用現有技術的方法,為了得到較高的加密效率就必須提高時鐘頻率,實現該方法的集成電路會導致(1)晶片的信號完整性不好。
(2)晶片設計困難,產品實施困難。
(3)晶片設計成本高。
4.採用現有技術方法設計的集成電路,應用於系統中,時鐘頻率的提高會導致(1)印製電路板(PCB)成本增加。
(2)印製電路板(PCB)設計困難,產品實施困難。
(3)系統中的幹擾很大,會影響其他設備、器件的正常、高效工作。
發明內容
本發明的目的在於提供一種實現SMS4密碼算法中加解密處理的方法,其解決了背景技術中數據轉換處理的循環次數多,加密效率低的技術問題。
本發明的技術解決方案是一種實現SMS4密碼算法中加解密處理的方法,其特殊之處在於該方法包括循環加解密數據處理,所述循環加解密數據處理的實現步驟包括1)準備常數陣列根據數據轉換處理部件的個數安排常數陣列數據的寬度和深度,相同深度的數據構成一行;2)將外部數據輸入數據寄存部件在時鐘上沿或下沿,把數據寄存部件輸入端的數據傳送至該數據寄存部件的輸出端;3)進行首次數據轉換處理
(1)在該時鐘周期內,將常數陣列存儲部件所存儲常數陣列的第一行對應的數據分別輸至所有的數據轉換部件;(2)在同一個時鐘周期內,數據寄存部件輸出端的數據輸入第一個數據轉換部件進行數據轉換處理;第一個數據轉換部件輸出的數據再輸入到下一個數據轉換部件進行數據轉換處理;依此方式,直至所有的數據轉換部件順序完成數據轉換處理;4)進行再次數據轉換處理(1)在下一個時鐘沿到來的時刻,將前次數據轉換處理的數據存至數據寄存部件;(2)在該時鐘周期內,將常數陣列存儲部件所存儲常數陣列的下一行對應的數據分別輸至所有的數據轉換部件;(3)在同一個時鐘周期內,數據寄存部件輸出端的數據輸入第一個數據轉換部件進行數據轉換處理;第一個數據轉換部件輸出的數據再輸入到下一個數據轉換部件進行數據轉換處理;依此方式,直至所有的數據轉換部件順序完成數據轉換處理;5)重複再次數據轉換處理重複再次數據轉換處理過程,直至完成所有規定的數據轉換處理過程,得到循環加解密數據處理結果。
上述準備常數陣列滿足的條件包括(1)將密鑰擴展處理所得到的常數陣列數據按照地址高低順序排列,存入常數陣列存儲部件;(2)根據數據轉換處理中數據轉換處理部件的個數安排對應寬度和深度,且寬度與深度的乘積為1024;(3)常數陣列中相同深度的數據構成一行。
上述循環加解密數據處理之前可加有附加加解密數據處理,所述附加加解密數據處理的實現步驟包括1)準備常數陣列根據附加加解密數據處理中數據轉換處理部件的個數安排常數陣列數據的寬度,常數陣列數據的深度為1;相同深度的數據構成一行;2)將外部數據輸入數據寄存部件(1)將外部數據輸至數據寄存部件的輸入端;(2)在時鐘上沿或下沿,把數據寄存部件輸入端的數據傳送至該數據寄存部件的輸出端;
3)進行附加數據轉換處理(1)在該時鐘周期內,將常數陣列存儲部件所存儲常數陣列對應的數據分別輸至附加加解密處理中的所有數據轉換部件;(2)在同一個時鐘周期內,數據寄存部件輸出端的數據輸入到第一個數據轉換部件進行數據轉換處理;第一個數據轉換部件輸出的數據再輸入到下一個數據轉換部件進行數據轉換處理;依此方式,直至附加加解密數據處理中的所有數據轉換部件順序完成數據轉換處理,得到附加加解密數據處理結果;4)以附加加解密數據處理結果作為循環加解密數據處理中的外部數據。
上述循環加解密數據處理之後可加有附加加解密數據處理,所述附加加解密數據處理的實現步驟包括1)準備常數陣列根據附加加解密數據處理中數據轉換處理部件的個數安排常數陣列數據的寬度,常數陣列數據的深度為1;相同深度的數據構成一行;2)將循環加解密數據處理得到的數據輸入數據寄存部件(1)將循環加解密數據處理得到的數據輸至數據寄存部件的輸入端;(2)在時鐘上沿或下沿,把數據寄存部件輸入端的數據傳送至該數據寄存部件的輸出端;3)進行附加數據轉換處理(1)在該時鐘周期內,將常數陣列存儲部件所存儲常數陣列對應的數據分別輸至附加加解密數據處理中的所有數據轉換部件;(2)在同一個時鐘周期內,數據寄存部件輸出端的數據輸入到第一個數據轉換部件進行數據轉換處理;第一個數據轉換部件輸出的數據再輸入到下一個數據轉換部件進行數據轉換處理;依此方式,直至附加加解密數據處理中的所有數據轉換部件順序完成數據轉換處理,得到附加加解密數據處理結果;4)附加加解密數據處理結果即為最終加解密數據處理結果。
上述準備常數陣列滿足的條件包括1)將密鑰擴展處理所得到的常數陣列數據按照地址高低順序排列,存入常數陣列存儲部件;2)根據數據轉換處理中數據轉換處理部件的個數安排對應寬度和深度(1)確定循環加解密數據處理中常數陣列的寬度和深度根據循環加解密數據處理中數據轉換處理部件的個數安排對應寬度和深度,得到循環加解密數據處理中常數陣列數據寬度與深度的乘積;(2)確定附加加解密數據處理中常數陣列數據的寬度和深度根據附加加解密數據處理中常數陣列數據的寬度為附加加解密數據處理中數據轉換處理部件的個數乘以32,附加加解密數據處理中常數陣列數據的的深度為1;確定附加加解密數據處理中常數陣列數據寬度與深度的乘積為附加加解密數據處理中數據轉換處理部件的個數×32×1;(3)循環加解密數據處理中常數陣列數據寬度與深度的乘積與附加加解密數據處理中常數陣列數據寬度與深度的乘積,兩者之和為1024;3)常數陣列中相同深度的數據構成一行。
上述外部數據輸入數據寄存部件可包括下列步驟(1)將外部數據輸至數據寄存部件的輸入端;(2)在時鐘上沿或下沿,把數據寄存部件輸入端的數據傳送至該數據寄存部件的輸出端。
上述附加數據轉換處理中的數據轉換處理部件可採用一個、二個或多個。
本發明具有以下優點1.數據轉換處理的循環次數少。例如,加密128bit的數據,若採用4個數據轉換部件,只需循環運行8個周期就能輸出最終數據處理結果。
2.加密效率高。由於單位時間內加密的數據數量大大增加,所以加密效率高。例如,若採用4個數據轉換部件,只需循環運行8個周期就能加密128bit數據,所以,在時鐘頻率相同的的情況下,可以使加密效率提高4倍。
3.採用本發明設計集成電路,在滿足所要求加密效率的情況下,由於時鐘頻率僅為原來的1/n,故時鐘頻率只需原來的1/n。例如,加密128bit的數據,若採用4個數據轉換部件,時鐘頻率只需原來的1/4。所以,在相同處理效率的情況下,實現該方法的晶片具有下述特點(1)可使晶片信號的完整性大大優化;(2)晶片的設計、產品易於實現;(3)晶片的設計成本降低。
4.採用本發明設計集成電路,在滿足所要求加密效率的情況下,由於時鐘頻率僅為原來的1/n,故時鐘頻率只需原來的1/n。在相同處理效率的情況下具有下述特點
(1)印製電路板(PCB)成本降低;(2)印製電路板(PCB)設計、產品易於實現;(3)系統中的幹擾降低,對其他設備、器件正常、高效工作的影響大幅度降低。
圖1為本發明的原理框圖;圖2為本發明循環加解密數據處理的流程示意圖;圖3為本發明在循環加解密數據處理之前加有附加加解密數據處理的流程示意圖;圖4為本發明在循環加解密數據處理之後加有附加加解密數據處理的流程示意圖;圖5為本發明循環加解密數據處理之前、之後均加有附加加解密數據處理的流程示意圖。
附圖標號說明1-數據寄存部件,2-數據轉換部件,3-常數陣列存儲部件,4-循環加解密數據處理;21-數據轉換部件,22-數據轉換部件;101-數據寄存部件,102-數據寄存部件;200-數據轉換部件,201-數據轉換部件,202-數據轉換部件,203-數據轉換部件;210-轉據轉換部件,211-數據轉換部件;220-數據轉換部件,221-數據轉換部件;301-常數陣列存儲部件,302-常數陣列存儲部件;501-附加加解密數據處理,502-附加加解密數據處理。
具體實施例方式
本發明主要通過數據寄存部件、常數陣列存儲部件及數據轉換部件實現。
本發明的數據寄存部件用於寄存外部數據及上一次數據轉換處理的結果。數據寄存部件一般可採用通用觸發器,如D觸發器、JK觸發器等。該類通用觸發器是在時鐘上沿或下沿把數據輸入端的數據傳至觸發器的輸出端,在其他時刻觸發器輸出端的數據不發生變化的數據暫存器件。即在同一個數據轉換處理周期內,數據寄存部件所寄存的數據是不改變的。
數據轉換部件是按照密碼算法要求進行數據處理的部件。例如,按照國家的SMS4密碼算法要求進行數據處理,數據轉換部件完成的操作中只有一次密碼算法所規定的合成置換。
常數陣列存儲部件用於存儲常數陣列數據。本發明採用的常數陣列是密鑰擴展處理所得到的結果數據,按照地址高低順序排列,按照循環體中數據轉換部件的個數安排常數陣列對應的寬度和深度,並且寬度與深度的乘積為1024。例如,採用4個數據轉換部件,那麼常數陣列的寬度是128bit,深度是8;若採用8個數據轉換部件,常數陣列的寬度則是256bit,深度是4。
本發明數據轉換部件的個數是32的約數時,宜於採用循環加解密數據處理的方法實現。參見圖1、2,本發明循環加解密數據處理實現步驟如下1)準備常數陣列。
(1)將密鑰擴展處理所得到的常數陣列數據按照地址高低順序排列,存入常數陣列存儲部件3;(2)根據數據轉換處理中數據轉換處理部件2的個數安排對應寬度和深度,並且寬度與深度的乘積為1024;(3)常數陣列中相同深度的數據構成一行。
2)將外部數據輸入數據寄存部件1。
(1)將外部數據輸至數據寄存部件1的輸入端;(2)在時鐘上沿或下沿,把數據寄存部件1輸入端的數據傳送至其輸出端。
3)進行首次數據轉換處理。
(1)在該時鐘周期內,將常數陣列存儲部件3所存儲常數陣列的第一行對應的數據分別輸至數據轉換部件2中所有的數據轉換部件200-203;(2)在同一個時鐘周期內,數據寄存部件1輸出端的數據輸入第一個數據轉換部件200進行數據轉換處理;第一個數據轉換部件200輸出的數據再輸入到下一個數據轉換部件201進行數據轉換處理;依此方式,直至數據轉換部件2中所有的數據轉換部件200-203順序完成數據轉換處理。
4)進行再次數據轉換處理。
(1)在下一個時鐘沿到來的時刻,將前次數據轉換處理的數據存至數據寄存部件1;(2)在該時鐘周期內,將常數陣列存儲部件3所存儲常數陣列的下一行對應的數據分別輸至數據轉換部件2中所有的數據轉換部件200-203;(3)在同一個時鐘周期內,數據寄存部件1輸出端的數據輸入第一個數據轉換部件200進行數據轉換處理;第一個數據轉換部件200輸出的數據再輸入到下一個數據轉換部件201進行數據轉換處理;依此方式,直至數據轉換部件2中所有的數據轉換部件200-203順序完成數據轉換處理。
5)重複再次數據轉換處理。
重複再次數據轉換處理過程,直至完成所有規定的數據轉換處理過程,得到循環加解密數據處理結果。
附加加解密數據處理用於補充完成循環加解密數據處理未完成的數據轉換處理,尤其是當數據轉換部件2中數據轉換部件的個數不是32的約數時,可通過循環加解密數據處理與附加加解密數據處理共同完成數據轉換處理。
參見圖3,附加加解密數據處理在循環加解密數據處理之前時的實現步驟1)準備常數陣列。
(1)將密鑰擴展處理所得到的常數陣列數據按照地址高低順序排列,存入常數陣列存儲部件301。
(2)根據數據轉換處理中數據轉換處理部件的個數安排對應寬度和深度①確定循環加解密數據處理中常數陣列的寬度和深度根據循環加解密數據處理中數據轉換處理部件的個數安排對應寬度和深度,得到循環加解密數據處理中常數陣列數據寬度與深度的乘積;②確定附加加解密數據處理中常數陣列數據的寬度和深度根據附加加解密數據處理中常數陣列數據的寬度為附加加解密數據處理中數據轉換處理部件的個數乘以32,附加加解密數據處理中常數陣列數據的的深度為1;確定附加加解密數據處理中常數陣列數據寬度與深度的乘積為附加加解密數據處理中數據轉換處理部件的個數×32×1;③附加加解密數據處理中的常數陣列數據應滿足循環加解密數據處理中常數陣列數據寬度與深度的乘積與附加加解密數據處理中常數陣列數據寬度與深度的乘積,兩者之和為1024;(3)常數陣列中相同深度的數據構成一行。
2)將外部數據輸入數據寄存部件101。
(1)將外部數據輸至數據寄存部件101的輸入端;(2)在時鐘上沿或下沿,把數據寄存部件101輸入端的數據傳送至其輸出端。
3)進行附加數據轉換處理。
(1)在該時鐘周期內,將常數陣列存儲部件301所存儲常數陣列對應的數據分別輸至數據轉換部件21中所有的數據轉換部件210、211……(2)在同一個時鐘周期內,數據寄存部件101輸出端的數據輸入到第一個數據轉換部件210進行數據轉換處理;第一個數據轉換部件210輸出的數據再輸入到下一個數據轉換部件211進行數據轉換處理;依此方式,直至數據轉換部件21中所有的數據轉換部件210、211……順序完成數據轉換處理,得到附加加解密數據處理501的數據處理結果。
4)以附加加解密數據處理501的數據處理結果作為循環加解密數據處理4中的外部數據,用來完成循環加解密數據處理。
參見圖4,附加加解密數據處理在循環加解密數據處理之後時的實現步驟1)準備常數陣列。
(1)將循環加解密數據處理所得到的常數陣列數據按照地址高低順序排列,存入常數陣列存儲部件302。
(2)根據數據轉換處理中數據轉換處理部件的個數安排對應寬度和深度①確定循環加解密數據處理中常數陣列的寬度和深度根據循環加解密數據處理中數據轉換處理部件的個數安排對應寬度和深度,得到循環加解密數據處理中常數陣列數據寬度與深度的乘積;②確定附加加解密數據處理中常數陣列數據的寬度和深度根據附加加解密數據處理中常數陣列數據的寬度為附加加解密數據處理中數據轉換處理部件的個數乘以32,附加加解密數據處理中常數陣列數據的的深度為1;確定附加加解密數據處理中常數陣列數據寬度與深度的乘積為附加加解密數據處理中數據轉換處理部件的個數×32×1;③附加加解密數據處理中的常數陣列數據應滿足循環加解密數據處理中常數陣列數據寬度與深度的乘積與附加加解密數據處理中常數陣列數據寬度與深度的乘積,兩者之和為1024;(3)常數陣列中相同深度的數據構成一行。
2)將循環加解密數據處理4得到的數據輸入數據寄存部件102。
(1)將循環加解密數據處理4得到的數據輸至數據寄存部件102的輸入端;(2)在時鐘上沿或下沿,把數據寄存部件102輸入端的數據傳送至其輸出端。
3)進行附加數據轉換處理。
(1)在該時鐘周期內,將常數陣列存儲部件302所存儲常數陣列對應的數據分別輸至數據轉換部件22中所有的數據轉換部件222、221……(2)在同一個時鐘周期內,數據寄存部件102輸出端的數據輸入到第一個數據轉換部件220進行數據轉換處理;第一個數據轉換部件220輸出的數據再輸入到下一個數據轉換部件221進行數據轉換處理;依此方式,直至數據轉換部件22中所有的數據轉換部件220、221……順序完成數據轉換處理,得到附加加解密數據處理502的數據處理結果。
4)附加加解密數據處理502的數據處理結果即為最終加解密數據處理結果。
附加加解密數據處理在循環加解密數據處理之前或之後進行均可,也可在之前和之後均附加該處理,參見圖5。附加加解密數據處理中的數據轉換處理部件可以是一個、二個或多個。
實施例數據轉換部件2為4個,即數據轉換部件200-203,常數陣列寬度為128bit,深度為8,採用循環加解密數據處理的方法進行加解密處理。參見圖2,實現步驟如下1)準備常數陣列。
(1)將常數陣列存入常數陣列存儲部件3;(2)若數據轉換處理中的數據轉換處理部件為4個,則常數陣列的寬度為128bit、深度為8。
(3)將128bit的常數陣列數據與深度8對應劃分為8行,每行分別命名為rk0,rk1,…rk7;將每行128bit的常數陣列數據分為4個32bit的數據。rk0分為rk0a、rk0b、rk0c、rk0d;rk1分為rk1a、rk1b、rk1c、rk1d……2)將外部數據輸入數據寄存部件1。
(1)將外部數據輸至數據寄存部件1的輸入端。外部數據是128bit的數據,分為4個32bit的數據,分別命名為A0、A1、A2、A3。
(2)在時鐘上沿或下沿,把數據寄存部件1輸入端的數據傳送至數據寄存部件1的輸出端,數據寄存部件1輸出128bit,分為4個32bit數據的數據,分別命名為a0、a1、a2、a3。
3)進行首次數據轉換處理。
(1)在該時鐘周期內,將常數陣列存儲部件3所存儲常數陣列的第一行對應的數據分別輸至所有的數據轉換部件200-203。
(2)在同一個時鐘周期內,數據寄存部件1輸出端的數據輸入第一個數據轉換部件200進行數據轉換處理;第一個數據轉換部件200輸出的數據再輸入下一個數據轉換部件201進行數據轉換處理;依此方式,直至所有的數據轉換部件即數據轉換部件200-203順序完成數據轉換處理。例如將數據寄存部件1輸出端的數據a0、a1、a2、a3及常數陣列存儲部件3輸出的數據rk0a輸送至數據轉換部件200,轉換處理後的數據仍然是128bit,分別命名為B0、B1、B2、B3;將數據轉換部件200輸出的數據B0、B1、B2、B3及常數陣列存儲部件3輸出的數據rk0b輸送至數據轉換部件201,轉換處理後的數據仍然是128bit,分別命名為C0、C1、C2、C3;將數據轉換部件201輸出的數據C0、C1、C2、C3及常數陣列存儲部件3輸出的數據rk0c輸送至數據轉換部件202,轉換處理後的數據仍然是128bit,分別命名為D0、D1、D2、D3;將數據轉換部件202輸出的數據D0、D1、D2、D3及常數陣列存儲部件3輸出的數據rk0d輸送至數據轉換部件203,轉換處理後的數據仍然是128bit,分別命名為E0、E1、E2、E3;E0、E1、E2、E3即是首次數據轉換處理的結果數據。
4)進行再次數據轉換處理。
(1)在時鐘沿到來的時刻,將前次數據轉換處理的數據E0、E1、E2、E3存至數據寄存部件1;將數據寄存部件1的輸出端數據e0、e1、e2、e3依次輸入數據轉換部件200-203;(2)將常數陣列存儲部件3所存儲的常數陣列的下一行對應的數據rk1a、rk1b、rk1c、rk1d分別輸入數據轉換部件200-203;(3)進行再次數據轉換。
5)重複再次數據轉換處理,得到加解密數據處理結果。
再次數據轉換處理每進行一次,即完成一個數據轉換處理周期。將再次數據轉換處理循環處理6次,即數據轉換處理共進行8次,最後一次數據轉換處理後輸出的數據即為最終數據處理結果。
當數據轉換部件2為2個時,循環加解密數據處理共進行16個時鐘周期完成一次加解密處理。當數據轉換部件2為8個時,循環加解密數據處理共進行4個時鐘周期完成一次加解密處理。當數據轉換部件2為16個時,循環加解密數據處理共進行2個時鐘周期完成一次加解密處理。
權利要求
1.一種實現SMS4密碼算法中加解密處理的方法,其特徵在於該方法包括循環加解密數據處理,所述循環加解密數據處理的實現步驟包括1)準備常數陣列根據數據轉換處理部件的個數安排常數陣列數據的寬度和深度,相同深度的數據構成一行;2)將外部數據輸入數據寄存部件在時鐘上沿或下沿,把數據寄存部件輸入端的數據傳送至該數據寄存部件的輸出端;3)進行首次數據轉換處理(1)在該時鐘周期內,將常數陣列存儲部件所存儲常數陣列的第一行對應的數據分別輸至所有的數據轉換部件;(2)在同一個時鐘周期內,數據寄存部件輸出端的數據輸入第一個數據轉換部件進行數據轉換處理;第一個數據轉換部件輸出的數據再輸入到下一個數據轉換部件進行數據轉換處理;依此方式,直至所有的數據轉換部件順序完成數據轉換處理;4)進行再次數據轉換處理(1)在下一個時鐘沿到來的時刻,將前次數據轉換處理的數據存至數據寄存部件;(2)在該時鐘周期內,將常數陣列存儲部件所存儲常數陣列的下一行對應的數據分別輸至所有的數據轉換部件;(3)在同一個時鐘周期內,數據寄存部件輸出端的數據輸入第一個數據轉換部件進行數據轉換處理;第一個數據轉換部件輸出的數據再輸入到下一個數據轉換部件進行數據轉換處理;依此方式,直至所有的數據轉換部件順序完成數據轉換處理;5)重複再次數據轉換處理重複再次數據轉換處理過程,直至完成所有規定的數據轉換處理過程,得到循環加解密數據處理結果。
2.根據權利要求1所述的實現SMS4密碼算法中加解密處理的方法,其特徵在於所述的準備常數陣列包括(1)將密鑰擴展處理所得到的常數陣列數據按照地址高低順序排列,存入常數陣列存儲部件;(2)根據數據轉換處理中數據轉換處理部件的個數安排對應寬度和深度,且寬度與深度的乘積為1024;(3)常數陣列中相同深度的數據構成一行。
3.根據權利要求1所述的實現SMS4密碼算法中加解密處理的方法,其特徵在於所述的循環加解密數據處理之前加有附加加解密數據處理,所述附加加解密數據處理的實現步驟包括1)準備常數陣列根據附加加解密數據處理中數據轉換處理部件的個數安排常數陣列數據的寬度,常數陣列數據的深度為1;相同深度的數據構成一行;2)將外部數據輸入數據寄存部件(1)將外部數據輸至數據寄存部件的輸入端;(2)在時鐘上沿或下沿,把數據寄存部件輸入端的數據傳送至該數據寄存部件的輸出端;3)進行附加數據轉換處理(1)在該時鐘周期內,將常數陣列存儲部件所存儲常數陣列對應的數據分別輸至附加加解密處理中的所有數據轉換部件;(2)在同一個時鐘周期內,數據寄存部件輸出端的數據輸入到第一個數據轉換部件進行數據轉換處理;第一個數據轉換部件輸出的數據再輸入到下一個數據轉換部件進行數據轉換處理;依此方式,直至附加加解密數據處理中的所有數據轉換部件順序完成數據轉換處理,得到附加加解密數據處理結果;4)以附加加解密數據處理結果作為循環加解密數據處理中的外部數據。
4.根據權利要求1或3所述的實現SMS4密碼算法中加解密處理的方法,其特徵在於所述的循環加解密數據處理之後加有附加加解密數據處理,所述附加加解密數據處理的實現步驟包括1)準備常數陣列根據附加加解密數據處理中數據轉換處理部件的個數安排常數陣列數據的寬度,常數陣列數據的深度為1;相同深度的數據構成一行;2)將循環加解密數據處理得到的數據輸入數據寄存部件(1)將循環加解密數據處理得到的數據輸至數據寄存部件的輸入端;(2)在時鐘上沿或下沿,把數據寄存部件輸入端的數據傳送至該數據寄存部件的輸出端;3)進行附加數據轉換處理(1)在該時鐘周期內,將常數陣列存儲部件所存儲常數陣列對應的數據分別輸至附加加解密數據處理中的所有數據轉換部件;(2)在同一個時鐘周期內,數據寄存部件輸出端的數據輸入到第一個數據轉換部件進行數據轉換處理;第一個數據轉換部件輸出的數據再輸入到下一個數據轉換部件進行數據轉換處理;依此方式,直至附加加解密數據處理中的所有數據轉換部件順序完成數據轉換處理,得到附加加解密數據處理結果;4)附加加解密數據處理結果即為最終加解密數據處理結果。
5.根據權利要求4所述的實現SMS4密碼算法中加解密處理的方法,其特徵在於所述的準備常數陣列包括1)將密鑰擴展處理所得到的常數陣列數據按照地址高低順序排列,存入常數陣列存儲部件;2)根據數據轉換處理中數據轉換處理部件的個數安排對應寬度和深度(1)確定循環加解密數據處理中常數陣列的寬度和深度根據循環加解密數據處理中數據轉換處理部件的個數安排對應寬度和深度,得到循環加解密數據處理中常數陣列數據寬度與深度的乘積;(2)確定附加加解密數據處理中常數陣列數據的寬度和深度根據附加加解密數據處理中常數陣列數據的寬度為附加加解密數據處理中數據轉換處理部件的個數乘以32,附加加解密數據處理中常數陣列數據的的深度為1;確定附加加解密數據處理中常數陣列數據寬度與深度的乘積為附加加解密數據處理中數據轉換處理部件的個數×32×1;(3)循環加解密數據處理中常數陣列數據寬度與深度的乘積與附加加解密數據處理中常數陣列數據寬度與深度的乘積,兩者之和為1024;3)常數陣列中相同深度的數據構成一行。
6.根據權利要求5所述的實現SMS4密碼算法中加解密處理的方法,其特徵在於所述的外部數據輸入數據寄存部件包括(1)將外部數據輸至數據寄存部件的輸入端;(2)在時鐘上沿或下沿,把數據寄存部件輸入端的數據傳送至該數據寄存部件的輸出端。
7.根據權利要求6所述的實現SMS4密碼算法中加解密處理的方法,其特徵在於所述的附加數據轉換處理中的數據轉換處理部件為一個、二個或多個。
全文摘要
一種實現SMS4密碼算法中加解密處理的方法,該方法的循環加解密數據處理步驟首先是準備常數陣列,將外部數據輸入數據寄存部件,進行首次數據轉換處理;然後進行再次數據轉換處理;再後重複再次數據轉換處理,直至完成所有規定的數據轉換處理過程,得到循環加解密數據處理結果。本發明解決了背景技術中數據轉換處理的循環次數多及加密效率低的技術問題。採用本發明設計集成電路,可大大降低系統的幹擾及成本。
文檔編號G09C1/00GK1845213SQ20061004186
公開日2006年10月11日 申請日期2006年3月2日 優先權日2006年3月2日
發明者鹿甲寅, 曹軍, 顏湘, 黃振海 申請人:西安西電捷通無線網絡通信有限公司