欢迎来到 AI 中文社区(简称 AI 中文社),这里是学习交流 AI 人工智能技术的中文社区。 为了更好的体验,本站推荐使用 Chrome 浏览器。
全部教程·
区块链·
区块链算法
[目录]
·
有限域逆元求解
区块链算法
base58 编码解码
base64 编码解码
SHA-256 算法介绍
SHA-256 算法原理
SHA-256 C语言版
SHA-256 Go语言版
MD5 Go语言版
大端模式和小端模式
RIPEMD160 Go语言版
BTC 地址生成算法
ECC 加密算法
ECC 数学基础
有限域逆元求解
比特币协议 Secp256k1
数字证书获取流程
比特币挖矿算法
PoW挖矿算法
比特币源码 挖矿
Keccak 算法
区块链 merkle tree
Go语言 urfave/cli
Go语言 JS运行库
HMAC 算法
PBKDF2 加密算法
bcrypt 算法
AES 加密算法
golang 封装leveldb
BLAKE BLAKE2算法
SHA1 SHA2 SHA3
区块链算法
base58 编码解码
base64 编码解码
SHA-256 算法介绍
SHA-256 算法原理
SHA-256 C语言版
SHA-256 Go语言版
MD5 Go语言版
大端模式和小端模式
RIPEMD160 Go语言版
BTC 地址生成算法
ECC 加密算法
ECC 数学基础
有限域逆元求解
比特币协议 Secp256k1
数字证书获取流程
比特币挖矿算法
PoW挖矿算法
比特币源码 挖矿
Keccak 算法
区块链 merkle tree
Go语言 urfave/cli
Go语言 JS运行库
HMAC 算法
PBKDF2 加密算法
bcrypt 算法
AES 加密算法
golang 封装leveldb
BLAKE BLAKE2算法
SHA1 SHA2 SHA3
有限域上的逆元计算求解
逆元,即逆元素,是指一个可以取消另一给定元素运算的元素,在数学里,逆元素广义化了加法中的加法逆元和乘法中的倒数。
在正整数有限域 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
Secp256k1 即 Standards for Efficient Cryptography Parameters,是指比特币中使用的ECDSA(椭圆曲线数字签名算法)曲线的参数,并且在高效密码学标准中进 ...
AI 中文社