本發(fā)明實施例涉及數(shù)據(jù)加密技術(shù)領(lǐng)域,尤其涉及一種數(shù)據(jù)加密和解密的方法及裝置。
背景技術(shù):
隨著計算機(jī)技術(shù)的發(fā)展,人們普遍使用計算機(jī)進(jìn)行數(shù)據(jù)的存儲和傳輸。但不少存儲傳輸?shù)臄?shù)據(jù)具有保密要求,因此需要對存儲和傳輸?shù)臄?shù)據(jù)進(jìn)行加密處理。
現(xiàn)有技術(shù)中,一般的數(shù)據(jù)加密方法,往往采用單一的加密方式,很容易被破解,從而導(dǎo)致信息安全難以得到保證。在這種情況下,一種復(fù)雜、可逆、安全的數(shù)據(jù)加密方法顯得尤為重要。
技術(shù)實現(xiàn)要素:
本發(fā)明實施例提供一種數(shù)據(jù)加密和解密的方法及裝置,以實現(xiàn)提高數(shù)據(jù)加密的安全級別的效果。
第一方面,本發(fā)明實施例提供了一種數(shù)據(jù)加密方法,該方法包括:
將待加密數(shù)據(jù)通過第一可逆變換轉(zhuǎn)化為第一數(shù)組,所述第一數(shù)組元素個數(shù)與所述待加密數(shù)據(jù)的數(shù)據(jù)位數(shù)相同,所述第一數(shù)組的每個元素為相同位數(shù)的二進(jìn)制數(shù);
將所述第一數(shù)組的每個元素輸入到非線性移位寄存器的每個單元;
將所述第一數(shù)組進(jìn)行分組加密算法運算;
將所述分組加密算法的運算結(jié)果通過壓縮函數(shù)進(jìn)行壓縮變換,得到與所述第一數(shù)組每個元素位數(shù)相同的壓縮輸出數(shù)據(jù);
所述壓縮輸出數(shù)據(jù)與所述非線性移位寄存器的溢出單元的第一數(shù)組元素進(jìn)行第一規(guī)則運算,并將運算結(jié)果輸入到補償單元;
將所述非線性移位寄存器單元的元素按照所述第一可逆變換的逆變換得到加密輸出數(shù)據(jù)。
進(jìn)一步的,在將所述第一數(shù)組進(jìn)行分組加密算法運算之前,還包括:
判斷是否存在加密口令;
當(dāng)存在加密口令時,將所述加密口令通過第二可逆變換轉(zhuǎn)化為第二數(shù)組;
將所述第二數(shù)組的每個元素輸入到閉環(huán)移位寄存器的每個單元,所述第二數(shù)組元素個數(shù)與所述加密口令的數(shù)據(jù)位數(shù)相同,所述第二數(shù)組每個元素為相同位數(shù)的二進(jìn)制數(shù);
相應(yīng)的,將所述第一數(shù)組進(jìn)行分組加密算法運算,還包括:
將所述第一數(shù)組以及所述第二數(shù)組和/或計數(shù)器數(shù)值進(jìn)行分組加密算法運算,其中,所述計數(shù)器數(shù)值采用二進(jìn)制數(shù)表示。
進(jìn)一步的,將所述第一數(shù)組以及所述第二數(shù)組和/或計數(shù)器數(shù)值進(jìn)行分組加密算法運算,包括:
將所述第一數(shù)組以及所述第二數(shù)組和/或計數(shù)器數(shù)值進(jìn)行第二規(guī)則運算;
將所述第二規(guī)則運算的結(jié)果進(jìn)行分組加密算法運算。
進(jìn)一步的,將所述第一數(shù)組以及所述第二數(shù)組和/或計數(shù)器數(shù)值進(jìn)行第二規(guī)則運算,包括:
從所述非線性移位寄存器以第一預(yù)設(shè)準(zhǔn)則抽取至少一個元素作為第一數(shù)組計算元素,以及從所述閉環(huán)移位寄存器以第二預(yù)設(shè)準(zhǔn)則抽取至少一個元素作為第二數(shù)組計算元素;
將所述第一數(shù)組計算元素與所述第二數(shù)組計算元素和/或計數(shù)器數(shù)值進(jìn)行第二規(guī)則運算。
進(jìn)一步的,所述方法還包括:
從所述非線性移位寄存器以第一預(yù)設(shè)準(zhǔn)則抽取至少一個元素作為第一數(shù)組計算元素,包括:
保留所述非線性移位寄存器的溢出單元,從相鄰溢出單元的第二個單元截取預(yù)設(shè)長度,得到第一數(shù)組計算元素;
從所述閉環(huán)移位寄存器以第二預(yù)設(shè)準(zhǔn)則抽取至少一個元素作為第二數(shù)組計算元素,包括:
步驟a、將所述閉環(huán)移位寄存器進(jìn)行一次移位;
步驟b、從所述第二數(shù)組的最低元素位截取預(yù)設(shè)長度,得到第二數(shù)組計算元素;
重復(fù)進(jìn)行第一數(shù)組計算元素和第二數(shù)組計算元素的截取過程,當(dāng)?shù)谝粩?shù)組的所有元素位都與壓縮輸出數(shù)據(jù)進(jìn)行第一規(guī)則運算后,則完成所有的級運算,即完成當(dāng)前輪運算。
進(jìn)一步的,完成一輪運算的所有級運算之后,將所述非線性移位寄存器的每個單元所存儲的數(shù)據(jù)倒置,再進(jìn)入下一輪運算或者終止。
進(jìn)一步的,所述分組加密算法包括z分組加密算法。
第二方面,本發(fā)明實施例還提供了一種基于上述數(shù)據(jù)加密方法的數(shù)據(jù)解密方法,該方法包括:
將非線性移位寄存器逆向移位;
壓縮輸出數(shù)據(jù)與所述非線性移位寄存器的溢出單元的元素進(jìn)行第一規(guī)則運算的逆運算,并將運算結(jié)果輸入到補償單元;
將所述非線性移位寄存器單元的元素按照所述第一可逆變換的逆變換得到解密輸出數(shù)據(jù)。
第三方面,本發(fā)明實施例還提供了一種數(shù)據(jù)加密裝置,該裝置包括:
第一數(shù)組轉(zhuǎn)化模塊,用于將待加密數(shù)據(jù)通過第一可逆變換轉(zhuǎn)化為第一數(shù)組;
第一輸入存儲模塊,用于將所述第一數(shù)組的每個元素輸入到非線性移位寄存器的每個單元,所述第一數(shù)組元素個數(shù)與所述待加密數(shù)據(jù)的數(shù)據(jù)位數(shù)相同,所述第一數(shù)組的每個元素為相同位數(shù)的二進(jìn)制數(shù);
加密運算模塊,用于將所述第一數(shù)組進(jìn)行分組加密算法運算;
壓縮模塊,用于將所述分組加密算法的運算結(jié)果通過壓縮函數(shù)進(jìn)行壓縮變換,得到與所述第一數(shù)組每個元素位數(shù)相同的壓縮輸出數(shù)據(jù);
第一規(guī)則運算模塊,用于所述壓縮輸出數(shù)據(jù)與所述非線性移位寄存器的溢出單元的第一數(shù)組元素進(jìn)行第一規(guī)則運算,并將運算結(jié)果輸入到補償單元;
加密數(shù)據(jù)輸出模塊,用于將所述非線性移位寄存器單元的元素按照所述第一可逆變換的逆變換得到加密輸出數(shù)據(jù)。
進(jìn)一步的,所述裝置還包括:
加密口令判斷模塊,用于判斷是否存在加密口令;
第二數(shù)組轉(zhuǎn)化模塊,用于當(dāng)存在加密口令時,將所述加密口令通過第二可逆變換轉(zhuǎn)化為第二數(shù)組;
第二輸入存儲模塊,用于將所述第二數(shù)組的每個元素輸入到閉環(huán)移位寄存器的每個單元,所述第二數(shù)組元素個數(shù)與所述加密口令的數(shù)據(jù)位數(shù)相同,所述第二數(shù)組每個元素為相同位數(shù)的二進(jìn)制數(shù);
相應(yīng)的,加密運算模塊,還用于:
將所述第一數(shù)組以及所述第二數(shù)組和/或計數(shù)器數(shù)值進(jìn)行分組加密算法運算,其中,所述計數(shù)器數(shù)值采用二進(jìn)制數(shù)表示。
第四方面,本發(fā)明實施例還提供了一種數(shù)據(jù)解密裝置,該裝置包括:
非線性移位寄存器控制模塊,用于將非線性移位寄存器逆向移位;
解密模塊,用于壓縮輸出數(shù)據(jù)與所述非線性移位寄存器的溢出單元的元素進(jìn)行第一規(guī)則運算的逆運算,并將運算結(jié)果輸入到補償單元;
解密輸出數(shù)據(jù)確定模塊,用于將所述非線性移位寄存器單元的元素按照所述第一可逆變換的逆變換得到解密輸出數(shù)據(jù)。
本發(fā)明實施例通過將待加密數(shù)據(jù)轉(zhuǎn)化為可以用來進(jìn)行加密處理的第一數(shù)組,并將第一數(shù)組輸入至非線性移位寄存器當(dāng)中,再對第一數(shù)組進(jìn)行分組加密算法加密運算以及將其結(jié)果進(jìn)行壓縮變換,使得壓縮輸出數(shù)據(jù)能夠和第一數(shù)組中每個元素的位數(shù)相同,再將壓縮輸出數(shù)據(jù)與非線性移位寄存器的溢出單元內(nèi)的第一數(shù)組元素通過第一規(guī)則運算,將得到的結(jié)果輸入到補償單元,這樣利用非線性移位寄存器的特征,將第一數(shù)組的元素進(jìn)行一定次數(shù)的移位和非線性變換后,得到的非線性移位寄存器上各個單元的結(jié)果,通過第一可逆變換的逆變換得到加密輸出數(shù)據(jù),解決了現(xiàn)有技術(shù)中數(shù)據(jù)加密級別不夠,容易被破解的技術(shù)問題,實現(xiàn)了提高數(shù)據(jù)加密的安全級別的效果,并能夠使得加密輸出數(shù)據(jù)的格式與待加密數(shù)據(jù)的格式相同,達(dá)到了保留原格式的效果。
附圖說明
圖1是本發(fā)明實施例一提供的數(shù)據(jù)加密方法的流程圖;
圖2是本發(fā)明實施例二提供的數(shù)據(jù)加密方法的流程圖;
圖3是本發(fā)明實施例三提供的數(shù)據(jù)加密方法的流程圖;
圖4是本發(fā)明實施例四提供的數(shù)據(jù)解密方法的流程圖;
圖5是本發(fā)明實施例五提供的數(shù)據(jù)加密裝置的結(jié)構(gòu)示意圖;
圖6是本發(fā)明實施例六提供的數(shù)據(jù)解密裝置的結(jié)構(gòu)示意圖;
圖7是本發(fā)明優(yōu)選實施例加密過程示意圖;
圖8是本發(fā)明優(yōu)選實施例解密過程示意圖。
具體實施方式
下面結(jié)合附圖和實施例對本發(fā)明作進(jìn)一步的詳細(xì)說明??梢岳斫獾氖?,此處所描述的具體實施例僅僅用于解釋本發(fā)明,而非對本發(fā)明的限定。另外還需要說明的是,為了便于描述,附圖中僅示出了與本發(fā)明相關(guān)的部分而非全部結(jié)構(gòu)。
在更加詳細(xì)地討論示例性實施例之前應(yīng)當(dāng)提到的是,一些示例性實施例被描述成作為流程圖描繪的處理或方法。雖然流程圖將各步驟描述成順序的處理,但是其中的許多步驟可以被并行地、并發(fā)地或者同時實施。此外,各步驟的順序可以被重新安排。當(dāng)其操作完成時所述處理可以被終止,但是還可以具有未包括在附圖中的附加步驟。所述處理可以對應(yīng)于方法、函數(shù)、規(guī)程、子例程、子程序等等。
實施例一
圖1是本發(fā)明實施例一提供的數(shù)據(jù)加密方法的流程圖,本實施例可適用數(shù)據(jù)加密情況,該方法可以由本發(fā)明實施例所提供的數(shù)據(jù)加密裝置來執(zhí)行,該裝置可以由軟件和/或硬件的方式來實現(xiàn),并可集成于各種可以對數(shù)據(jù)進(jìn)行加密的載體中。
如圖1所示,所述數(shù)據(jù)加密方法包括:
s110、將待加密數(shù)據(jù)通過第一可逆變換轉(zhuǎn)化為第一數(shù)組,所述第一數(shù)組元素個數(shù)與所述待加密數(shù)據(jù)的數(shù)據(jù)位數(shù)相同,所述第一數(shù)組的每個元素為相同位數(shù)的二進(jìn)制數(shù)。
其中,待加密數(shù)據(jù)的格式可以是數(shù)字、字母以及數(shù)字加字母的格式,也可以是包含符號等的其他格式。第一可逆變換強調(diào)了變換過程必須是可逆的,如果是映射,則必須是單射且滿射才可以,還可以是其他形式的變換,如待加密數(shù)據(jù)是10位銀行卡號,則可以將其進(jìn)行第一可逆變換得到一個正整數(shù)集合的數(shù)組,如10位銀行卡號分別為“9876543210”,則可以定義第一可逆變換為:從左至右,第一位數(shù)字減9,第二位數(shù)字減7,第三位數(shù)字減5,第四位數(shù)字減3,第五位數(shù)字減1,第六位數(shù)字加1,第七位數(shù)字加3,第八位數(shù)字加5,第九位數(shù)字加7,第十位數(shù)字加9,從而得到十位數(shù)字“0123456789”。該可逆變換的逆變換可以在相應(yīng)位置加上或者減去相應(yīng)數(shù)字,即可得到變換前的數(shù)據(jù)。
其中,第一數(shù)組的元素個數(shù)與所述待加密數(shù)據(jù)的數(shù)據(jù)位數(shù)相同,所述第一數(shù)組的每個元素為相同位數(shù)的二進(jìn)制數(shù)。如上述示例中,待加密數(shù)據(jù)的元素個數(shù)為10個,第一數(shù)組的元素個數(shù)也為10個。且所述第一數(shù)組的每個元素為相同位數(shù)的二進(jìn)制數(shù),第一數(shù)組的每個元素都是二進(jìn)制數(shù),且各個元素的位數(shù)相同,如上述示例中,從0到9轉(zhuǎn)化為二進(jìn)制數(shù)后,可以根據(jù)最大的元素“9”確定二進(jìn)制數(shù)的位數(shù),即將“9”轉(zhuǎn)化為“1001”時,二進(jìn)制位數(shù)為4位,則相應(yīng)的,從0到8也要轉(zhuǎn)化為4位二進(jìn)制數(shù),如“0”可以轉(zhuǎn)化為“0000”等。相應(yīng)的,如果xmax是第一數(shù)組中數(shù)值最大的數(shù),可以利用log2xmax向上取整的方式得到第一數(shù)組的二進(jìn)制位數(shù)。
其中,將待加密數(shù)據(jù)轉(zhuǎn)化為第一數(shù)組可以是任意正整數(shù)集合,本發(fā)明實施例中,優(yōu)選的,將待加密數(shù)據(jù)轉(zhuǎn)化為整數(shù)環(huán)所對應(yīng)的二進(jìn)制數(shù)組作為第一數(shù)組,這樣設(shè)置的理由是可以再將其轉(zhuǎn)化為第一數(shù)組后,盡量的降低第一數(shù)組中每個元素的二進(jìn)制位數(shù)。其中,整數(shù)環(huán)是包括0的連續(xù)非負(fù)整數(shù)集合。
s120、將所述第一數(shù)組的每個元素輸入到非線性移位寄存器的每個單元。
其中,非線性移位寄存器包含多個單元,其單元個數(shù)可以由非線性移位寄存器芯片來決定,本發(fā)明實施例中,為了保證第一數(shù)組的每個元素都能夠輸入到非線性移位寄存器的單元中,非線性移位寄存器的型號可以根據(jù)本發(fā)明實施例所提供的加密方法的使用環(huán)境來確定,如當(dāng)前環(huán)境中,第一數(shù)組的位數(shù)較多,可以選擇單元較多的非線性移位寄存器,如當(dāng)前環(huán)境中,第一數(shù)組的位數(shù)較少,可以選擇單元較少的非線性移位寄存器。
s130、將所述第一數(shù)組進(jìn)行分組加密算法運算。
其中,分組加密算法的種類有很多,任意可逆的分組加密算法都可以作為本發(fā)明實施例的加密算法。這也是本發(fā)明實施例的有益效果之一,就是能夠容納各種符合條件的加密算法,這樣,就可以根據(jù)用戶的需要,進(jìn)行設(shè)置或者調(diào)整分組加密算法的種類,提高了本發(fā)明實施例的適用范圍。
其中,分組加密算法可以針對第一數(shù)組進(jìn)行一次運算,也可以是針對第一數(shù)組中的每個元素進(jìn)行多次分組加密運算,還可以是以一定的規(guī)律,將其中的一個或者多個元素進(jìn)行分組加密運算。具體的,可以結(jié)合非線性移位寄存器的每個單元的數(shù)據(jù)進(jìn)行抽取和加密處理,并且可以在針對一定的規(guī)律的分組加密運算,按照移位寄存器的特點,每次進(jìn)行移位并抽取和分組加密運算,這樣就可以大大提升分組加密運算的安全級別。并且以非線性移位寄存器為基礎(chǔ),與通過軟件或者程序來實現(xiàn)的加密運算相比,可以提高數(shù)據(jù)計算過程中的準(zhǔn)確性以及提高數(shù)據(jù)運算速度。
本發(fā)明實施例中,優(yōu)選的,以z分組加密算法作為加密運算的核心算法。這樣設(shè)置的好處在于,z分組加密算法具有復(fù)雜性、唯一性、可逆性以及安全性的特點,可以確保加密的安全級別。
s140、將所述分組加密算法的運算結(jié)果通過壓縮函數(shù)進(jìn)行壓縮變換,得到與所述第一數(shù)組每個元素位數(shù)相同的壓縮輸出數(shù)據(jù)。
其中,得到的分組加密算法的運算結(jié)果的位數(shù)可以是與第一數(shù)組中每個元素位數(shù)相同,也可以不同。無論得到的分組加密算法的運算結(jié)果的位數(shù)是多少,都可以通過壓縮函數(shù)得到一個與第一數(shù)組每個元素位數(shù)相同的二進(jìn)制數(shù),作為壓縮輸出數(shù)據(jù)。
其中,在一輪加密過程中,可以進(jìn)行一次或者多次壓縮變換,得到多個壓縮輸出數(shù)據(jù),并形成壓縮輸出數(shù)據(jù)組的形式,與第一數(shù)組相對應(yīng)。
s150、所述壓縮輸出數(shù)據(jù)與所述非線性移位寄存器的溢出單元的第一數(shù)組元素進(jìn)行第一規(guī)則運算,并將運算結(jié)果輸入到補償單元。
其中,第一規(guī)則運算可以是加法運算,乘法運算、減法運算等,優(yōu)選的,可以是壓縮輸出數(shù)據(jù)與所述非線性移位寄存器的溢出單元兩個數(shù)之間的相加求余數(shù)過程,如x+y=zmodl,其中x為壓縮輸出數(shù)據(jù),y為非線性移位寄存器的溢出單元的數(shù)據(jù),z為第一規(guī)則運算的運算結(jié)果,l為第一數(shù)組的元素個數(shù)。溢出單元是經(jīng)過一次移位之后,不再保存在元數(shù)據(jù)當(dāng)中的單元,補償單元是經(jīng)過一次移位之后,不再保存在元數(shù)據(jù)當(dāng)中的單元。如一個非線性移位寄存器中,有四個數(shù)據(jù)端,即d0.d1.d2.d3,若d0為溢出單元,則d3為補償單元,則經(jīng)過一次移位之后數(shù)據(jù)就變成d1.d2.d3.s0,其中,s0可以是由d0經(jīng)過非線性變換之后得到的數(shù)據(jù)。
s160、將所述壓縮輸出數(shù)據(jù)按照所述第一可逆變換的逆變換得到加密輸出數(shù)據(jù)。
將得到的一個或者多個壓縮輸出數(shù)據(jù)按照第一可逆變換的逆變換,就可以得到加密輸出數(shù)據(jù)。并且,加密輸出數(shù)據(jù)的格式與輸入數(shù)據(jù)的格式相同。
本發(fā)明實施例通過將待加密數(shù)據(jù)轉(zhuǎn)化為可以用來進(jìn)行加密處理的第一數(shù)組,并將第一數(shù)組輸入至非線性移位寄存器當(dāng)中,再對第一數(shù)組進(jìn)行分組加密算法加密運算以及將其結(jié)果進(jìn)行壓縮變換,使得壓縮輸出數(shù)據(jù)能夠和第一數(shù)組中每個元素的位數(shù)相同,再將壓縮輸出數(shù)據(jù)與非線性移位寄存器的溢出單元內(nèi)的第一數(shù)組元素通過第一規(guī)則運算,將得到的結(jié)果輸入到補償單元,這樣利用非線性移位寄存器的特征,將第一數(shù)組的元素進(jìn)行一定次數(shù)的移位和非線性變換后,得到的非線性移位寄存器上各個單元的結(jié)果,通過第一可逆變換的逆變換得到加密輸出數(shù)據(jù),解決了現(xiàn)有技術(shù)中數(shù)據(jù)加密級別不夠,容易被破解的技術(shù)問題,實現(xiàn)了提高數(shù)據(jù)加密的安全級別的效果,并能夠使得加密輸出數(shù)據(jù)的格式與待加密數(shù)據(jù)的格式相同,達(dá)到了保留原格式的效果。
實施例二
圖2是本發(fā)明實施例二提供的數(shù)據(jù)加密方法的流程圖。本實施例在上述實施例的基礎(chǔ)上,進(jìn)行了進(jìn)一步的改進(jìn),即,在將所述第一數(shù)組進(jìn)行分組加密算法運算之前,還包括:當(dāng)存在加密口令時,將所述加密口令通過第二可逆變換轉(zhuǎn)化為第二數(shù)組;將所述第二數(shù)組的每個元素輸入到閉環(huán)移位寄存器的每個單元,所述第二數(shù)組元素個數(shù)與所述加密口令的數(shù)據(jù)位數(shù)相同,所述第二數(shù)組每個元素為相同位數(shù)的二進(jìn)制數(shù);相應(yīng)的,將所述第一數(shù)組進(jìn)行分組加密算法運算,還包括:將所述第一數(shù)組以及所述第二數(shù)組和/或計數(shù)器數(shù)值進(jìn)行分組加密算法運算,其中,所述計數(shù)器數(shù)值采用二進(jìn)制數(shù)表示。
如圖2所示,所述數(shù)據(jù)加密方法包括:
s201、將待加密數(shù)據(jù)通過第一可逆變換轉(zhuǎn)化為第一數(shù)組。
s202、將所述第一數(shù)組的每個元素輸入到非線性移位寄存器的每個單元。
s203、當(dāng)存在加密口令時,將所述加密口令通過第二可逆變換轉(zhuǎn)化為第二數(shù)組。
其中,所述第二數(shù)組元素個數(shù)與所述加密口令的數(shù)據(jù)位數(shù)相同,所述第二數(shù)組每個元素為相同位數(shù)的二進(jìn)制數(shù)。
本發(fā)明實施例中,設(shè)置加密口令可以是完全獨立設(shè)定的一種提高數(shù)據(jù)安全性的方式,而本實施例進(jìn)一步調(diào)用加密口令作為數(shù)據(jù)加密的參考依據(jù)。將其作為數(shù)據(jù)加密的一部分,不僅提高了數(shù)據(jù)的安全級別,還可以根據(jù)用戶的不同,設(shè)置與用戶對應(yīng)的加密方法,進(jìn)而提高了數(shù)據(jù)加密的個性化使用,避免出現(xiàn)所有人或者所有數(shù)據(jù)都以一套加密機(jī)制進(jìn)行加密,影響數(shù)據(jù)的安全性。
本發(fā)明實施例中,加密口令可以是字母集、數(shù)字集以及其他組合形式,甚至還可以是用戶的語音特征或者生物特征,經(jīng)過一套編碼機(jī)制編碼為字母集或者數(shù)字集等。
相應(yīng)的,第二可逆變換可以與第一可逆變換相同,也可以與第一可逆變換不同。但是其對加密口令的轉(zhuǎn)換機(jī)制是與第一口令變換相同的。如,可以把用戶輸入的密碼“a1234”轉(zhuǎn)化為相應(yīng)的第二數(shù)組,數(shù)組的每個元素都是位數(shù)相同的二進(jìn)制數(shù)。
s204、將所述第二數(shù)組的每個元素輸入到閉環(huán)移位寄存器的每個單元。
閉環(huán)移位寄存器是可以實現(xiàn)從“a1、a2、a3、a4”到“a4、a1、a2、a3”或者“a2、a3、a4、a1”的正反向移位的過程。其中,第二數(shù)組元素個數(shù)與加密口令的數(shù)據(jù)位數(shù)相同,第二數(shù)組每個元素為相同位數(shù)的二進(jìn)制數(shù)。
值得說明的是,s203和s204并非必須在s201和s202之后執(zhí)行,s203和s204只要在s205之前執(zhí)行就可以,而并不限定這兩個步驟與s201和s202之間的先后順序。
s205、將所述第一數(shù)組以及所述第二數(shù)組和/或計數(shù)器數(shù)值進(jìn)行分組加密算法運算,其中,所述計數(shù)器數(shù)值采用二進(jìn)制數(shù)表示。
本實施例給出了三種技術(shù)方案,即第一數(shù)組與第二數(shù)組、第一數(shù)組與計數(shù)器數(shù)值以及第一數(shù)組與第二數(shù)組和計數(shù)器數(shù)值三者同時加入運算。
相應(yīng)的,采用第一數(shù)組與第二數(shù)組的方式可以提高加密運算的安全性以及個性化;采用第一數(shù)組與計數(shù)器數(shù)值的方式可以提高加密運算的安全性和穩(wěn)定性,可以以計數(shù)器數(shù)值作為參考,更加準(zhǔn)確;采用第一數(shù)組與第二數(shù)組和計數(shù)器數(shù)值三者同時加入運算則可以兼具上述兩種方案的有點。
其中,為了計算的方便,計數(shù)器數(shù)值采用二進(jìn)制數(shù)表示,避免需要對其進(jìn)行重新編碼,增加加密運算的復(fù)雜度。
s206、將所述分組加密算法的運算結(jié)果通過壓縮函數(shù)進(jìn)行壓縮變換,得到與所述第一數(shù)組每個元素位數(shù)相同的壓縮輸出數(shù)據(jù)。
s207、所述壓縮輸出數(shù)據(jù)與所述非線性移位寄存器的溢出單元的第一數(shù)組元素進(jìn)行第一規(guī)則運算,并將運算結(jié)果輸入到補償單元。
s208、將所述非線性移位寄存器單元的元素按照所述第一可逆變換的逆變換得到加密輸出數(shù)據(jù)。
本實施例在上述實施例的基礎(chǔ)上,提供了一種將用戶設(shè)置的加密口令以及計數(shù)器數(shù)據(jù)作為加密算法的因子,在提高加密算法的安全性的同時,還可以提高算法的個性化級別,并且加密口令是獨立與數(shù)據(jù)加密方法設(shè)置的,可以提高數(shù)據(jù)加密方法的兼容性。
值得說明的是,本發(fā)明實施例中,如果沒有加密口令,也可以讀取閉環(huán)移位寄存器的數(shù)據(jù),在這種情況下,只要將閉環(huán)移位寄存器的單元賦值為0即可,這樣就可以保證在有無加密口令時,都可以以同樣的模式來讀取數(shù)據(jù),無需采用單獨的方式控制是否讀取閉環(huán)移位寄存器的數(shù)據(jù),從而降低了算法的復(fù)雜度。
在上述技術(shù)方案的基礎(chǔ)上,優(yōu)選的,將所述第一數(shù)組以及所述第二數(shù)組和/或計數(shù)器數(shù)值進(jìn)行分組加密算法運算,包括:將所述第一數(shù)組以及所述第二數(shù)組和/或計數(shù)器數(shù)值進(jìn)行第二規(guī)則運算;將所述第二規(guī)則運算的結(jié)果進(jìn)行分組加密算法運算。
其中,第二規(guī)則運算可以是加運算,減運算等,還可以是復(fù)雜的運算機(jī)制,本發(fā)明實施例,優(yōu)選的,第二規(guī)則運算是加運算,這樣結(jié)合上述示例中,即便沒有加密口令,可以為其賦值為0,這就能夠保證其不影響運算結(jié)果,保證加密過程的準(zhǔn)確性。這樣設(shè)置的好處是將各因子進(jìn)行第二規(guī)則運算處理后,得到一個數(shù)據(jù),再將這個數(shù)據(jù)進(jìn)行分組加密算法的運算,可以提高分組加密算法的運算效率。
實施例三
圖3是本發(fā)明實施例三提供的數(shù)據(jù)加密方法的流程圖。本實施例在上述各實施例的基礎(chǔ)上,進(jìn)行了進(jìn)一步的改進(jìn),即,將所述第一數(shù)組以及所述第二數(shù)組和/或計數(shù)器數(shù)值進(jìn)行第二規(guī)則運算,包括:從所述非線性移位寄存器以第一預(yù)設(shè)準(zhǔn)則抽取至少一個元素作為第一數(shù)組計算元素,以及從所述閉環(huán)移位寄存器以第二預(yù)設(shè)準(zhǔn)則抽取至少一個元素作為第二數(shù)組計算元素;將所述第一數(shù)組計算元素與所述第二數(shù)組計算元素和/或計數(shù)器數(shù)值進(jìn)行第二規(guī)則運算。
如圖3所示,所述數(shù)據(jù)加密方法包括:
s301、將待加密數(shù)據(jù)通過第一可逆變換轉(zhuǎn)化為第一數(shù)組。
其中,所述第一數(shù)組元素個數(shù)與所述待加密數(shù)據(jù)的數(shù)據(jù)位數(shù)相同,所述第一數(shù)組的每個元素為相同位數(shù)的二進(jìn)制數(shù)。
s302、將所述第一數(shù)組的每個元素輸入到非線性移位寄存器的每個單元。
s303、當(dāng)存在加密口令時,將所述加密口令通過第二可逆變換轉(zhuǎn)化為第二數(shù)組。
其中,所述第二數(shù)組元素個數(shù)與所述加密口令的數(shù)據(jù)位數(shù)相同,所述第二數(shù)組每個元素為相同位數(shù)的二進(jìn)制數(shù)。
s304、將所述第二數(shù)組的每個元素輸入到閉環(huán)移位寄存器的每個單元。
s305、從所述非線性移位寄存器以第一預(yù)設(shè)準(zhǔn)則抽取至少一個元素作為第一數(shù)組計算元素,以及從所述閉環(huán)移位寄存器以第二預(yù)設(shè)準(zhǔn)則抽取至少一個元素作為第二數(shù)組計算元素。
其中,第一預(yù)設(shè)準(zhǔn)則包括:可以是根據(jù)第一數(shù)組的元素個數(shù)確定的一種準(zhǔn)則,還可以是根據(jù)當(dāng)前分組加密算法的數(shù)據(jù)量需求確定的一種準(zhǔn)則。如果是以當(dāng)前第一數(shù)組的元素個數(shù),可以抽取奇數(shù)位,或者抽取偶數(shù)位,或者根據(jù)當(dāng)前第一數(shù)組的元素個數(shù)收取固定長度的數(shù)據(jù)位數(shù),如以某一位為起始位,抽取1/2數(shù)組長度等。如果是以分組加密算法的數(shù)據(jù)量需求進(jìn)行抽取,則可以是根據(jù)當(dāng)前分組加密算法的處理能力,如256位、128位和64位等,還可以是根據(jù)當(dāng)前分組加密算法設(shè)置的計算數(shù)據(jù)量的長度等,還可以是當(dāng)前分組加密算法的數(shù)據(jù)運算的需求量等。相應(yīng)的確定了運算數(shù)據(jù)長度之后再確定抽取非線性移位寄存器中的哪些位數(shù)據(jù)進(jìn)行運算。
相應(yīng)的,第二預(yù)設(shè)準(zhǔn)則可以與第一運算準(zhǔn)則相同,也可以與之不同,但是其采用的機(jī)制可以是與第一預(yù)設(shè)準(zhǔn)則相同的。
其中,本發(fā)明實施例所提供的第一數(shù)組與第二數(shù)組的數(shù)據(jù)抽取方式可以是以某閉環(huán)移位寄存器以及非線性移位寄存器的某一個數(shù)據(jù)輸出位作為一個基準(zhǔn)點進(jìn)行抽取的。這樣,就可以結(jié)合移位寄存器每次移位過程中,針對每個數(shù)據(jù)元素作為基準(zhǔn)點進(jìn)行抽取及后續(xù)運算,這就可以實現(xiàn)以加密口令與待加密數(shù)據(jù)的自同步特征以及逐碼加密的特征,提高數(shù)據(jù)加密過程中的安全性和準(zhǔn)確性,達(dá)到了現(xiàn)有技術(shù)中未達(dá)到的有益效果。
s306、將所述第一數(shù)組計算元素與所述第二數(shù)組計算元素和/或計數(shù)器數(shù)值進(jìn)行第二規(guī)則運算。
s307、將所述第二規(guī)則運算的結(jié)果進(jìn)行分組加密算法運算。
s308、將所述分組加密算法的運算結(jié)果通過壓縮函數(shù)進(jìn)行壓縮變換,得到與所述第一數(shù)組每個元素位數(shù)相同的壓縮輸出數(shù)據(jù)。
s309、所述壓縮輸出數(shù)據(jù)與所述非線性移位寄存器的溢出單元的第一數(shù)組元素進(jìn)行第一規(guī)則運算,并將運算結(jié)果輸入到補償單元。
s310、將所述非線性移位寄存器單元的元素按照所述第一可逆變換的逆變換得到加密輸出數(shù)據(jù)。
本實施例在上述各實施例的基礎(chǔ)上,提供了一種以預(yù)設(shè)準(zhǔn)則進(jìn)行數(shù)據(jù)抽取并加密方式,在提高數(shù)據(jù)加密的安全性的同時,還可以實現(xiàn)自同步以及逐碼加密,提高了本發(fā)明實施例的數(shù)據(jù)加密效果。
在上述技術(shù)方案的基礎(chǔ)上,優(yōu)選的,從所述非線性移位寄存器以第一預(yù)設(shè)準(zhǔn)則抽取至少一個元素作為第一數(shù)組計算元素,包括:
保留所述非線性移位寄存器的溢出單元,從相鄰溢出單元的第二個單元截取預(yù)設(shè)長度,得到第一數(shù)組計算元素;
其中,保留是指不從溢出單元進(jìn)行截取,并不影響非線性移位寄存器的移位。相鄰溢出單元的第二個單元是指d0.d1.d2.d3,若d0為溢出單元,則d1所在的單元為第二個單元。
從所述閉環(huán)移位寄存器以第二預(yù)設(shè)準(zhǔn)則抽取至少一個元素作為第二數(shù)組計算元素,包括:
步驟a、將所述閉環(huán)移位寄存器進(jìn)行一次移位;
其中,如果閉環(huán)移位寄存器包含四個單元,當(dāng)前各單元的數(shù)據(jù)為s0.s1.s2.s3,則經(jīng)過一次移位之后,四個單元的數(shù)據(jù)變?yōu)閟1.s2.s3.s0,或者s3.s0.s1.s2,具體的移位方向可以根據(jù)使用需要去設(shè)定。
步驟b、從所述第二數(shù)組的最低元素位截取預(yù)設(shè)長度,得到第二數(shù)組計算元素;
重復(fù)進(jìn)行第一數(shù)組計算元素和第二數(shù)組計算元素的截取過程,當(dāng)?shù)谝粩?shù)組的所有元素位都與壓縮輸出數(shù)據(jù)進(jìn)行第一規(guī)則運算后,則完成所有的級運算,即完成當(dāng)前輪運算。
其中,分別給出了從非線性移位寄存器和從閉環(huán)移位寄存器中抽取數(shù)據(jù)的方式,即分別從非線性移位寄存器和從閉環(huán)移位寄存器中截取預(yù)設(shè)長度的數(shù)據(jù)作為加密運算的計算數(shù)據(jù)。本技術(shù)方案中,預(yù)設(shè)長度即可以是由分組加密算法確定的數(shù)據(jù)運算量,也可以是經(jīng)用戶設(shè)置的數(shù)據(jù)運算量等。其中步驟a和步驟b表示了一種閉環(huán)移位寄存器先運動再截取的過程。本方案中這樣設(shè)置的好處是可以以固定的截取方式遍歷第一數(shù)組的所有元素,若第一數(shù)組遍歷過程中,第二數(shù)組已經(jīng)完成了所有元素的循環(huán),則繼續(xù)循環(huán)截取第二數(shù)組的元素。若第一數(shù)組遍歷過程中,第二數(shù)組沒有完成所有元素的循環(huán),則以第一數(shù)組遍歷完成一次作為終止條件。
值得說明的是,當(dāng)以預(yù)設(shè)長度截取過程中,如果超過了第一數(shù)組或者第二數(shù)組的元素位數(shù),則在超過部分補充數(shù)據(jù)“0”即可,當(dāng)以預(yù)設(shè)長度截取過程中,如果少于第一數(shù)組或者第二數(shù)組的元素位數(shù)時,則截取到預(yù)設(shè)長度截止即可。
本技術(shù)方案還提供了一種將壓縮輸出數(shù)據(jù)作為非線性移位寄存器進(jìn)行補位數(shù)據(jù)的方案,這樣設(shè)置的好處是可以將壓縮輸出數(shù)據(jù)存儲并以備繼續(xù)使用該壓縮輸出數(shù)據(jù),簡化了加密算法的結(jié)構(gòu)的同時,還提高了數(shù)據(jù)的利用率和復(fù)雜度。
本技術(shù)方案還提供了一種級運算和輪運算的概念,在確定了第一數(shù)組和第二數(shù)組之后,以對第一數(shù)組的每個元素的計算(或者以第一數(shù)組的每個元素為基礎(chǔ)進(jìn)行的運算)作為級運算,完成第一數(shù)組的所有元素的運算,即完成了一輪運算,也可以理解為,輪運算包含級運算。
其中,級運算的次數(shù)可以根據(jù)第一數(shù)組的元素個數(shù)來確定。輪運算的次數(shù)可以由用戶來設(shè)定或者默認(rèn)設(shè)置,例如可以是3次、4次或者更多,本發(fā)明實施例中,優(yōu)選的,可以設(shè)置為大于等于3次,這樣設(shè)置是既考慮到加密算法的安全性,又可以兼顧加密算法的運算時間,避免時間過于冗長,影響用戶的體驗。
在上述各技術(shù)方案的基礎(chǔ)上,優(yōu)選的,完成一輪運算的所有級運算之后,將所述非線性移位寄存器的每個單元所存儲的數(shù)據(jù)倒置,再進(jìn)入下一輪運算或者終止。這樣設(shè)置的好處是避免反向截取數(shù)據(jù)帶來的復(fù)雜性,可以使兩個移位寄存器同步進(jìn)行移位輸出?,F(xiàn)實場景中,如算法設(shè)計時確定采用正反交替運動的輪間變換方法,即每輪之間改變非線性反饋移位寄存器的運動方向,但為了實現(xiàn)方便,算法中采用了非線性反饋移位寄存器的各輸入輸出端倒序存儲數(shù)據(jù)的等價辦法。每輪狀態(tài)的倒序、運動方向不變的方式,理論上與每輪狀態(tài)不倒序、運動方向相反的方式等價。
實施例四
圖4是本發(fā)明實施例四提供的數(shù)據(jù)解密方法的流程圖,本實施例可適用數(shù)據(jù)解密情況,該方法可以由本發(fā)明實施例所提供的數(shù)據(jù)解密裝置來執(zhí)行,該裝置可以由軟件和/或硬件的方式來實現(xiàn),并可集成于各種可以對數(shù)據(jù)進(jìn)行解密的載體中。該方法是基于上述各實施例中數(shù)據(jù)加密方法對應(yīng)的數(shù)據(jù)解密方法,具體的解密過程與上述各實施例的加密過程相對應(yīng),具有與之相應(yīng)的有益效果。
如圖4所示,所述數(shù)據(jù)解密方法包括:
s410、將非線性移位寄存器逆向移位。
s420、壓縮輸出數(shù)據(jù)與所述非線性移位寄存器的溢出單元的元素進(jìn)行第一規(guī)則運算的逆運算,并將運算結(jié)果輸入到補償單元。
其中,壓縮輸出數(shù)據(jù)是由上述各實施例中的獲取方式得到的。結(jié)合上述示例,第一規(guī)則運算的逆運算可以是,將x+y=zmodl的運算過程逆運算,即z-y=xmodl的運算過程。
s430、將所述非線性移位寄存器單元的元素按照所述第一可逆變換的逆變換得到解密輸出數(shù)據(jù)。
相應(yīng)的,在完成數(shù)據(jù)加密過程所有輪運算的數(shù)據(jù)解密過程之后,在非線性移位寄存器的每個單元中的數(shù)據(jù)即為第一數(shù)組的各個元素,將各個元素通過第一可逆變換的逆變換就能夠得到最原始的待加密數(shù)據(jù),從而實現(xiàn)數(shù)據(jù)解密的過程。
本發(fā)明實施例是上述各實施例中數(shù)據(jù)加密的方法所對應(yīng)的數(shù)據(jù)解密方法,將上述各實施例中的非線性移位寄存器采用逆向移位,并按照數(shù)據(jù)加密過程的第一數(shù)組的截取方式進(jìn)行截取第一數(shù)組計算數(shù)據(jù),經(jīng)過分組加密運算和壓縮函數(shù)壓縮處理后,將得到的結(jié)果和此時非線性移位寄存器的溢出單元的元素進(jìn)行第一規(guī)則運算的逆運算處理,將處理結(jié)果輸入至此時非線性移位寄存器的補償單元,在完成所有次數(shù)的運算后,既可以得到原有的待加密數(shù)據(jù),實現(xiàn)數(shù)據(jù)的解密過程,解決了現(xiàn)有技術(shù)中數(shù)據(jù)加密級別不夠,容易被破解的技術(shù)問題,實現(xiàn)了提高數(shù)據(jù)加密的安全級別的效果。
實施例五
圖5是本發(fā)明實施例五提供的數(shù)據(jù)加密裝置的結(jié)構(gòu)示意圖。如圖5所示,所述數(shù)據(jù)加密裝置,包括:
第一數(shù)組轉(zhuǎn)化模塊510,用于將待加密數(shù)據(jù)通過第一可逆變換轉(zhuǎn)化為第一數(shù)組,所述第一數(shù)組元素個數(shù)與所述待加密數(shù)據(jù)的數(shù)據(jù)位數(shù)相同,所述第一數(shù)組的每個元素為相同位數(shù)的二進(jìn)制數(shù);
第一數(shù)組存儲模塊520,用于將所述第一數(shù)組的每個元素輸入到非線性移位寄存器的每個單元;
加密運算模塊530,用于將所述第一數(shù)組進(jìn)行分組加密算法運算;
壓縮模塊540,用于將所述分組加密算法的運算結(jié)果通過壓縮函數(shù)進(jìn)行壓縮變換,得到與所述第一數(shù)組每個元素位數(shù)相同的壓縮輸出數(shù)據(jù);
第一規(guī)則運算模塊550,用于所述壓縮輸出數(shù)據(jù)與所述非線性移位寄存器的溢出單元的第一數(shù)組元素進(jìn)行第一規(guī)則運算,并將運算結(jié)果輸入到補償單元
加密數(shù)據(jù)輸出模塊560,用于將所述非線性移位寄存器單元的元素按照所述第一可逆變換的逆變換得到加密輸出數(shù)據(jù)。
本發(fā)明實施例通過將待加密數(shù)據(jù)轉(zhuǎn)化為可以用來進(jìn)行加密處理的第一數(shù)組,并將第一數(shù)組輸入至非線性移位寄存器當(dāng)中,再對第一數(shù)組進(jìn)行分組加密算法加密運算以及將其結(jié)果進(jìn)行壓縮變換,使得壓縮輸出數(shù)據(jù)能夠和第一數(shù)組中每個元素的位數(shù)相同,再將壓縮輸出數(shù)據(jù)與非線性移位寄存器的溢出單元內(nèi)的第一數(shù)組元素通過第一規(guī)則運算,將得到的結(jié)果輸入到補償單元,這樣利用非線性移位寄存器的特征,將第一數(shù)組的元素進(jìn)行一定次數(shù)的移位和非線性變換后,得到的非線性移位寄存器上各個單元的結(jié)果,通過第一可逆變換的逆變換得到加密輸出數(shù)據(jù),解決了現(xiàn)有技術(shù)中數(shù)據(jù)加密級別不夠,容易被破解的技術(shù)問題,實現(xiàn)了提高數(shù)據(jù)加密的安全級別的效果,并能夠使得加密輸出數(shù)據(jù)的格式與待加密數(shù)據(jù)的格式相同,達(dá)到了保留原格式的效果。
在上述各實施例的基礎(chǔ)上,優(yōu)選的,還包括:
加密口令判斷模塊,用于判斷是否存在加密口令;
第二數(shù)組轉(zhuǎn)化模塊,用于當(dāng)存在加密口令時,將所述加密口令通過第二可逆變換轉(zhuǎn)化為第二數(shù)組;
第二輸入存儲模塊,用于將所述第二數(shù)組的每個元素輸入到閉環(huán)移位寄存器的每個單元,所述第二數(shù)組元素個數(shù)與所述加密口令的數(shù)據(jù)位數(shù)相同,所述第二數(shù)組每個元素為相同位數(shù)的二進(jìn)制數(shù);
相應(yīng)的,加密運算模塊530,還用于:
將所述第一數(shù)組以及所述第二數(shù)組和/或計數(shù)器數(shù)值進(jìn)行分組加密算法運算,其中,所述計數(shù)器數(shù)值采用二進(jìn)制數(shù)表示。
上述產(chǎn)品可執(zhí)行本發(fā)明任意實施例所提供的數(shù)據(jù)加密方法,具備執(zhí)行方法相應(yīng)的功能模塊和有益效果。
實施例六
圖6是本發(fā)明實施例六提供的數(shù)據(jù)解密裝置的結(jié)構(gòu)示意圖。如圖6所示,所述數(shù)據(jù)解密裝置,包括:
非線性移位寄存器控制模塊610,用于將非線性移位寄存器逆向移位。
解密模塊620,用于壓縮輸出數(shù)據(jù)與所述非線性移位寄存器的溢出單元的元素進(jìn)行第一規(guī)則運算的逆運算,并將運算結(jié)果輸入到補償單元。
解密輸出數(shù)據(jù)確定模塊630,用于將所述非線性移位寄存器單元的元素按照所述第一可逆變換的逆變換得到解密輸出數(shù)據(jù)。本發(fā)明實施例通過上述各實施例中數(shù)據(jù)加密裝置所對應(yīng)的數(shù)據(jù)解密裝置,將上述各實施例中的數(shù)據(jù)加密過程進(jìn)行逆轉(zhuǎn)化,既可以得到原有的待加密數(shù)據(jù),實現(xiàn)數(shù)據(jù)的解密過程,解決了現(xiàn)有技術(shù)中數(shù)據(jù)加密級別不夠,容易被破解的技術(shù)問題,實現(xiàn)了提高數(shù)據(jù)加密的安全級別的效果。
上述產(chǎn)品可執(zhí)行本發(fā)明任意實施例所提供的數(shù)據(jù)解密方法,具備執(zhí)行方法相應(yīng)的功能模塊和有益效果。
優(yōu)選實施例
圖7是本發(fā)明優(yōu)選實施例加密過程示意圖,本實施例在上述各實施例的基礎(chǔ)上,提供了一種數(shù)據(jù)加密方法的優(yōu)選實施例,如圖7所示:
將待加密數(shù)據(jù)轉(zhuǎn)化為第一數(shù)組輸入到非線性移位寄存器中,并將加密口令轉(zhuǎn)化為第二數(shù)組輸入到閉環(huán)移位寄存器中之后,分別截取預(yù)設(shè)長度的數(shù)據(jù),并和計數(shù)器數(shù)據(jù)進(jìn)行第二規(guī)則運算。
其中,0到m-1表示的是閉環(huán)移位寄存器中存儲的第二數(shù)組中個元素的位數(shù),共m位,可以看到,閉環(huán)移位寄存器是先運動,后截取數(shù)據(jù)的,所以第0位已經(jīng)運動至最后一位,其截取方式是以最低位向前截取預(yù)設(shè)長度,作為第二數(shù)組計算元素a。
其中,0到n-1表示的是非線性移位寄存器中存儲的第一數(shù)組中個元素的位數(shù),共n位,其截取方式是以次高位向后截取預(yù)設(shè)長度,作為第一數(shù)組計算元素b。
將第一數(shù)組計算元素b和第二數(shù)組計算元素a以及計數(shù)器數(shù)據(jù)進(jìn)行第二規(guī)則運算,得到第二規(guī)則運算輸出數(shù)據(jù)c。
再將第二規(guī)則運算輸出數(shù)據(jù)c進(jìn)行分組加密算法運算,得到分組加密算法運算結(jié)果d。
將分組加密算法運算結(jié)果d進(jìn)行壓縮函數(shù)的壓縮運算,得到壓縮輸出數(shù)據(jù)e。
將壓縮輸出數(shù)據(jù)e與非線性移位寄存器的最高位數(shù)據(jù)x相加并求余數(shù),如x+e=fmodn,得到第一規(guī)則運算輸出結(jié)果f,將f作為非線性移位寄存器的最低位,原非線性移位寄存器的各位次數(shù)據(jù)依次上移,即得到一級運算的輸出結(jié)果。
完成所有級運算后及為完成當(dāng)前輪運算。
圖8是本發(fā)明優(yōu)選實施例解密過程示意圖,如圖8所示,可以在閉環(huán)移位寄存器和非線性移位寄存器的數(shù)據(jù)截取方式不變的情況下,僅變換非線性移位寄存器的移位方向,以及采用第一規(guī)則運算的逆運算的形式,即f-e=xmodn,就可以得到非線性移位寄存器的補償單元(即數(shù)據(jù)加密過程中的溢出單元)的數(shù)據(jù),從而得到數(shù)據(jù)解密過程以及最終得到解密數(shù)據(jù)。其中,可以以計數(shù)器數(shù)據(jù)為解密步驟的確定方式,如在加密過程中,計數(shù)器由0一直加計數(shù)255,則在解密過程中,計數(shù)器數(shù)據(jù)由255減計數(shù)到0時,則表示完成了解密算法的所有計算。
注意,上述僅為本發(fā)明的較佳實施例及所運用技術(shù)原理。本領(lǐng)域技術(shù)人員會理解,本發(fā)明不限于這里所述的特定實施例,對本領(lǐng)域技術(shù)人員來說能夠進(jìn)行各種明顯的變化、重新調(diào)整和替代而不會脫離本發(fā)明的保護(hù)范圍。因此,雖然通過以上實施例對本發(fā)明進(jìn)行了較為詳細(xì)的說明,但是本發(fā)明不僅僅限于以上實施例,在不脫離本發(fā)明構(gòu)思的情況下,還可以包括更多其他等效實施例,而本發(fā)明的范圍由所附的權(quán)利要求范圍決定。