有限域上的的逆运算有两种求取算法,一种是指数法,一种是扩展的欧几里德算法。
1、指数法
对于有限域
GF(p)
,
p
为素数,对于该域上的非零元素
而整数
p−1
可以化为二进制表示
e=p−2=erer−1...e1e0
其中最高位
er=1
那么求逆过程就转换成了有限域上的求指数的过程,而有限域上求指数的算法过程是:
x=g
for i=r-1:0
x=x*x
if ei==1
x=x*g
end
end
输出x就是要求取的逆。
2、扩展的欧几里德算法
欧几里德算法又称之为辗转相除法,对于两个整数
a,b
,若
a>b
,求取其最大公约数
gcd(a,b)
,有
gcd(a,b)=gcd(b,amodb)
,如此辗转除下去就可以得到最大公约数。
扩展欧几里德算法指的是:对于不全为0的整数
a,b
,存在整数
x,y
,使得
ax+by=gcd(a,b)
求取
x,y
的过程是:
根据欧几里德算法,
ax+by=gcd(a,b)=gcd(b,amodb)=bx2+(amodb)y2
利用恒等定理则有:
x1=y2;y1=x2−[a/b]∗y2
可以看出,当辗转相除停止时,可以递归求取
x,y
。
利用此定理,在有限域
GF(p)
上,对于任意一个非零元
g
,则有