前言
最近在复习现代密码理论中的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,b a,b的最大公约数可以表示为
g c d ( a , b ) = d = s a + t b gcd(a,b) = d = sa + tb gcd(a,b)=d=sa+tb
把 d = s a + t b d = sa + tb d=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∗