主页 > imtoken苹果钱包 > 比特币地址生成过程以及如何判断一个比特币地址是否有效

比特币地址生成过程以及如何判断一个比特币地址是否有效

imtoken苹果钱包 2023-02-13 05:56:13

2021-10-20

(1) 比特币地址生成过程

1、公钥是私钥通过椭圆曲线加密算法生成的,公钥实际上是一串字节数组。 私钥是从随机生成的数字字符串中散列的十六进制字符串。

2. 有了公钥后,通过以下步骤生成一个比特币地址:

比特币地址生成过程以及如何判断一个比特币地址是否有效

具体过程:

比特币算法软件_比特币算法_比特币的地址是由什么算法生成的

1.对公钥进行256次哈希,再进行160次哈希生成20字节的哈希

RIPEMD160 (SHA256 (Pubkey)) -> 20 字节公钥散列

2.在20字节的公钥散列前加上1字节的版本号,生成21字节的值

version{0}+RIPEMD160 (SHA256 (Pubkey)) -> 21 字节值

3、然后对21字节的值进行两次256的哈希运算,生成一个32字节的哈希值,取前四位,得到

比特币的地址是由什么算法生成的_比特币算法_比特币算法软件

校验和值

SHA256 (SHA256 (21 byte value)) -> 32 byte hash -> 取前4个字节(Checksum)

4.加上1个字节的版本号,20个字节的公钥散列,4个字节的校验和比特币的地址是由什么算法生成的,总共25个字节

版本+公钥散列+校验和->25字节

5、将第四步的25字节数字进行base58编码比特币的地址是由什么算法生成的,生成定长的比特币地址

比特币的地址是由什么算法生成的_比特币算法_比特币算法软件

2. 如何判断一个比特币地址是否有效

func IsValidForAdress(地址[]byte) bool {

version_public_checksumBytes := Base58Decode(地址)

checkSumBytes := version_public_checksumBytes[len(version_public_checksumBytes) - addressChecksumLen:]

version_ripemd160 := version_public_checksumBytes[:len(version_public_checksumBytes) - addressChecksumLen]

比特币算法_比特币的地址是由什么算法生成的_比特币算法软件

检查字节:=校验和(版本_ripemd160)

如果字节。 比较(checkSumBytes,checkBytes)== 0 {

返回真

}

返回假

比特币的地址是由什么算法生成的_比特币算法软件_比特币算法

}

说明: 1.对地址进行反编码,得到version+public+checksum的字节数组

2.取version+public+checksum的字节数组最后4个字节作为校验值

3、取version+public+checksum的字节数组的前21个字节进行两次256哈希运算,取结果值的前4个字节,与第二步的checksum值进行比较。 如果它们一致,则 Address 有效。

分类:

技术要点:

相关文章: