有限域上的逆元计算求解

逆元,即逆元素,是指一个可以取消另一给定元素运算的元素,在数学里,逆元素广义化了加法中的加法逆元和乘法中的倒数。

在正整数有限域 Fp (p是素数)上,a 的乘法逆元 b 满足:ab ≡ 1(mod p)。

例如: a=4, p=23 ,因为 4 * 6 mod 23 = 1,所以 a=4 的逆元为 6。

 

使用 go 语言求解有限域上的逆元:

package main
import "fmt"

func inv(x, p int) int {
	if x == 0 || x>=p {
		panic("参数 x 必须在 1 到 p-1 之间")
		return 0
	}
	if x == 1 {
		return 1
	}
	return (p - p/x) * inv(p%x, p) % p
}

func main() {
	x := 4
	p := 23
	y := inv(x, p)
	fmt.Printf("x=%v,p=%v 有限域上的逆元:%v", x, p, y)
}

运行后输出结果:

x=4,p=23 有限域上的逆元:6

Secp256k1 即 Standards for Efficient Cryptography Parameters,是指比特币中使用的ECDSA(椭圆曲线数字签名算法)曲线的参数,并且在高效密码学标准中进 ...