前言
最近在复习现代密码理论中的AES,AES中的字节变换的核心操作就是求GF(28)GF(2^8)GF(28)上的多项式逆元,这个问题困扰了我一段时间,今天终于得到解决,其实计算方式和数论中求两个数的Bezout算法是一样的,这里感谢数论老师教给我们的用矩阵行初等变换的方法求Bezout,进而求逆元。
Bezout恒等式
设a,b∈Za,b\in\mathcal{Z}a,b∈Z,则a,ba,ba,b的最大公约数可以表示为
gcd(a,b)=d=sa+tbgcd(a,b) = d = sa + tbgcd(a,b)=d=sa+tb
把d=sa+tbd = sa + tbd=sa+tb称作Bezout恒等式。
矩阵的行初等变换求解Bezout恒等式
这里以一个具体的实例来说明,求gcd(5,177)gcd(5,177)gcd(5,177)。
-
先把欲求的两个数写成如下的矩阵形式,即是以5和17为第一列,后面拼一个单位矩阵。
[17710501] \left[\begin{matrix} 177 & 1 & 0\\ 5 & 0 & 1 \\ \end{matrix}\right][17751001] -
将上述矩阵行初等变换至5和17这两个位置任意一个为0即可,另一个位置的值就是a和b的最大公约数。
[0∗∗1−271] \left[\begin{matrix} 0 & * & *\\ 1 & -2 & 71 \\ \end{matrix}\right][01∗−2∗71