扩展欧几里得算法(Bezout恒等式)求有限域上多项式的乘法逆元

前言

最近在复习现代密码理论中的AES,AES中的字节变换的核心操作就是求 G F ( 2 8 ) GF(2^8) GF(28)上的多项式逆元,这个问题困扰了我一段时间,今天终于得到解决,其实计算方式和数论中求两个数的Bezout算法是一样的,这里感谢数论老师教给我们的用矩阵行初等变换的方法求Bezout,进而求逆元

Bezout恒等式

a , b ∈ Z a,b\in\mathcal{Z} a,bZ,则 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] [01271]

  • 得到Bezout恒等式,上述两个*位置表示这个问题中,不需要关注那两个位置的值
    1 = 177 ∗ − 2 + 71 ∗ 5 1 = 177*-2 + 71*5 1=1772+715

  • 如果最大公约数为1,则可以方便的看出其中一个元素的逆元。上式两端同时模177
    71 ∗ 5 ≡ 1 m o d 177 71*5 \equiv 1 mod 177 7151mod177

  • 这样就得到71和5在 Z 177 中 的 逆 元 \mathcal{Z}_{177}中的逆元 Z177

求解 G F ( 2 8 ) GF(2^8) GF28上的多项式乘法逆元

求通过不可约多项式 x 8 + x 4 + x 3 + x + 1 x^8+x^4+x^3+x+1 x8+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+1 x3+1 x 8 + x 4 + x 3 + x + 1 x^8+x^4+x^3+x+1 x8+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_2 r1x5r2
    • r 1 − x 2 r 2 r_1 - x^2r_2 r1x2r2
    • r 1 − x r 2 r_1 - xr_2 r1xr2
    • r 1 − r 2 r_1 - r_2 r1r2
    • r 2 − x r 1 r_2 - xr_1 r2xr1
    • r 1 − x 2 r 2 r_1 - x^2r_2 r1x2r2
  • 最后得到

[ 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] [01xx6+x3+x2+x+1]

  • 显然 x 3 + 1 x^3+1 x3+1的逆元为 x 6 + x 3 + x 2 + x + 1 x^6+x^3+x^2+x+1 x6+x3+x2+x+1
  • 转换为2进制表示 01001111 01001111 01001111
  • 16进制表示 ( 4 F ) H (4F)_H (4F)H

你可能感兴趣的:(数学基础)