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