AES中Sbox的生成

轉載請註明來源:http://blog.csdn.net/zhangyang0402/archive/2010/04/08/5465032.aspx

一、概述

在整個AES加密中,SBox被使用到了兩次:一次是在密鑰(Cipher Key)擴展生成輪密鑰(Round Key)的時候,另一次是輪加密的第一步字節替換(SubByte)

根據FIPS 197SBox的生成分兩步:

1.GF(28)有限域內各元素的乘法逆元.(運用擴展歐幾里得算法)

 

2.用第1步的結果做仿射變換(Affine Transformation)

 

二、具體求解步驟

下面是求解過程,這裏這裏以第1列第0元素{10}爲例

 

1.求{10}在有限域GF(28)上的乘法逆元

{10}用多項式表示爲: x4

由擴展歐幾里得算法:

 

d

X1

X2

X3

Y1

Y2

Y3

 

1

0

x8+x4+x3+x+1

0

1                             

x4

x4+1

0

1

x4

1

x4+1

x3+x+1

x

1

x4+1

x3+x+1

x

x5+x+1

x2+x

x+1

x

x5+x+1

x2+x

x2+x+1

x6+ x5 + x4+ x2

1

 

Y2=x6+ x5 + x4+ x2  {74},是{10}GF(28)有限域上的逆元

 

2{74}做仿射變換

B={74}=01110100

= b7b6b5b4b3b2b1b0

 

C={63}=01100011

=c7c6c5c4c3c2c1c0

 

B’=b’7b’6b’5b’4b’3b’2b’1b’0

由仿射變換定義,

b’0=b0b4b5b6b7c0=0

b’1=b1b5b6b7b0c1=1

b’2=b2b6b7b0b1c2=0

b’3=b3b7b0b1b2c3=1

b’4=b4b0b1b2b3c4=0

b’5=b5b1b2b3b4c5=0

b’6=b6b2b3b4b5c6=1

b’7=b7b3b4b5b6c7=1

B’=11001010={ca}

 

{74}經仿射變換,結果爲{ca}

因此,在SBox中,第10元素的對應值爲{ca}。其他元素也可相繼求出。規定 {00}映射到其本身。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章