有限域上的逆运算

有限域上的的逆运算有两种求取算法,一种是指数法,一种是扩展的欧几里德算法。

1、指数法

对于有限域 GF(p) p 为素数,对于该域上的非零元素 g ,则{g}的逆元为 c=g1=gp2
而整数 p1 可以化为二进制表示 e=p2=erer1...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 ,则有
gx+py=gcd(g,p)=1 ,那么使得等式成立的 x 就是 g 的逆元,那么求解逆元的过程就转换成了求解 x 的过程。

你可能感兴趣的:(加密算法,算法)