前言
最近在复习现代密码理论中的AES,AES中的字节变换的核心操作就是求G F ( 2 8 ) GF(2^8)GF(28)上的多项式逆元,这个问题困扰了我一段时间,今天终于得到解决,其实计算方式和数论中求两个数的Bezout算法是一样的,这里感谢数论老师教给我们的用矩阵行初等变换的方法求Bezout,进而求逆元。
Bezout恒等式
设a , b ∈ Z a,b\in\mathcal{Z}a,b∈Z,则a , b a,ba,b的最大公约数可以表示为
g c d ( a , b ) = d = s a + t b gcd(a,b) = d = sa + tbgcd(a,b)=d=sa+tb
把d = s a + t b d = sa + tbd=sa+tb称作Bezout恒等式。
矩阵的行初等变换求解Bezout恒等式
这里以一个具体的实例来说明,求g c d ( 5 , 177 ) gcd(5,177)gcd(5,177)。
先把欲求的两个数写成如下的矩阵形式,即是以5和17为第一列,后面拼一个单位矩阵。
[ 177 1 0 5 0 1 ] \left[\begin{matrix} 177 & 1 & 0\\ 5 & 0 & 1 \\ \end{matrix}\right][17751001]将上述矩阵行初等变换至5和17这两个位置任意一个为0即可,另一个位置的值就是a和b的最大公约数。
[ 0 ∗ ∗ 1 − 2 71 ] \left[\begin{matrix} 0 & * & *\\ 1 & -2 & 71 \\ \end{matrix}\right][01∗−2∗71]得到Bezout恒等式,上述两个*位置表示这个问题中,不需要关注那两个位置的值
1 = 177 ∗ − 2 + 71 ∗ 5 1 = 177*-2 + 71*51=177∗−2+71∗5如果最大公约数为1,则可以方便的看出其中一个元素的逆元。上式两端同时模177
71 ∗ 5 ≡ 1 m o d 177 71*5 \equiv 1 mod 17771∗5≡1mod177这样就得到71和5在Z 177 中 的 逆 元 \mathcal{Z}_{177}中的逆元Z177中的逆元
求解G F ( 2 8 ) GF(2^8)GF(28)上的多项式乘法逆元
求通过不可约多项式x 8 + x 4 + x 3 + x + 1 x^8+x^4+x^3+x+1x8+x4+x3+x+1构造的G F ( 2 8 ) GF(2^8)GF(28)上( 09 ) H (09)_H(09)H在上的乘法逆元。
- 1.( 09 ) H (09)_H(09)H转换为多项式
( 09 ) H = 00001001 = x 3 + 1 (09)_H = 00001001 = x^3+1(09)H=00001001=x3+1
- 2.求x 3 + 1 x^3+1x3+1在x 8 + x 4 + x 3 + x + 1 x^8+x^4+x^3+x+1x8+x4+x3+x+1上的逆元,构造矩阵
[ x 8 + x 4 + x 3 + x + 1 1 0 x 3 + 1 0 1 ] \left[\begin{matrix} x^8+x^4+x^3+x+1 & 1 & 0\\ x^3+1 &0 &1 \\ \end{matrix}\right][x8+x4+x3+x+1x3+11001] - 3.行初等变换至标准形式(注意合并多项式的时候系数是模2加法)
- 4.具体的变换步骤,这里就不详细展开,但给出变换的顺序
- r 1 − x 5 r 2 r_1 - x^5r_2r1−x5r2
- r 1 − x 2 r 2 r_1 - x^2r_2r1−x2r2
- r 1 − x r 2 r_1 - xr_2r1−xr2
- r 1 − r 2 r_1 - r_2r1−r2
- r 2 − x r 1 r_2 - xr_1r2−xr1
- r 1 − x 2 r 2 r_1 - x^2r_2r1−x2r2
- 最后得到
[ 0 ∗ ∗ 1 x x 6 + x 3 + x 2 + x + 1 ] \left[\begin{matrix} 0 & *& *\\ 1 &x&x^6+x^3+x^2+x+1\\ \end{matrix}\right][01∗x∗x6+x3+x2+x+1]
- 显然x 3 + 1 x^3+1x3+1的逆元为x 6 + x 3 + x 2 + x + 1 x^6+x^3+x^2+x+1x6+x3+x2+x+1
- 转换为2进制表示01001111 0100111101001111
- 16进制表示( 4 F ) H (4F)_H(4F)H