官术网_书友最值得收藏!

1.17 SKIPJACK加密算法

SKIPJACK是一種分組加密算法,其輸入、輸出分組為64比特,密鑰長度為80比特。輸入明文(密文)分成4個16比特的字,交替使用A和B兩種步進規則,經32次步進(即32層迭代變換)生成密文(明文)。第1~8次步進、17~24次進步按步進規則A進行,第9~16次步進、25~32次步進按步進規則B進行。A和B兩種步進規則如圖1.17.1所示。

圖1.17.1 SKIPJACK算法的兩種步進規則

圖1.17.1中,w1w4表示4個16比特的字;G依賴的密鑰可逆變換,也稱為G置換;計數器取值范圍1~32,分別用于32次步進。

用上角標i表示第i步進變化后的狀態,即用表示明文,表示經 i次步進后的狀態,則步進規則A和B可用下列公式來表示。

1.加密

(1)步進規則A如下:

(2)步進規則B如下:

i=0,1, …,31

經上述32次步進后,可得,即密文。

2.脫密

(1)步進規則A的逆運算:

(2)進步規則B的逆運算:

經上述32次步進后,可得,即明文。

G置換依賴于密鑰的4層Feistel結構,如圖1.17.2所示。

圖1.17.2 SKIPJACK加密算法G置換

將80比特的密鑰分成10個字節,記為k0k9。將第i步進輸入的16比特的字分成高位和低位兩個字節,分別記為g1g2,迭代計算如下:

g3=F(g2k4i)⊕g1

g4=F(g3k4i+1)⊕g2

g5=F(g4k4i+2)⊕g3

g6=F(g5k4i+3)⊕g4

Gi(g1g2)=g5g6

式中,“‖”表示兩個字節相連接。在k4ik4i+3中,下角進行的是模10加。

類似地有

(Gi)-1(g5g6)=g1g2

式中,gj=F(gj+1k4i+j-1)⊕gj+2, j=4,3,2,1。

G置換中的F函數是8比特的字節非線性代替,如下所示。用高4比特表示行,低4比特表示列,如F(7a)=d6。

SKIPJACK加密算法有類似于DES的四種工作方式,它們是:

輸出反饋(OFB)方式:64比特。

密文反饋(CFB)方式:64比特、32比特、16比特、8比特。

電子密本(ECB)方式:64比特。

密文分組鏈接(CBC)方式:64比特。

例如,電子密本方式(下面所有數值都以十六進制的形式表示,左邊為最高比特)。

明文輸入為:33221100ddccbbaa。

密鑰為:00998877665544332211。

中間步驟如下:

密文輸出為2587 cae2 7a12 d300。

主站蜘蛛池模板: 莱州市| 商都县| 揭阳市| 页游| 洪泽县| 慈溪市| 和顺县| 乌鲁木齐市| 普洱| 饶平县| 迭部县| 海阳市| 黔东| 清新县| 达尔| 建始县| 于田县| 信阳市| 碌曲县| 大田县| 文昌市| 阿拉善右旗| 曲麻莱县| 宁海县| 金门县| 巴林左旗| 湘乡市| 女性| 丰县| 钟祥市| 惠东县| 西畴县| 习水县| 曲松县| 额敏县| 子洲县| 石泉县| 茶陵县| 平山县| 桐城市| 泾川县|