主页 > imtoken苹果钱包 > 比特币地址生成过程以及如何判断一个比特币地址是否有效
比特币地址生成过程以及如何判断一个比特币地址是否有效
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 有效。
分类:
技术要点:
相关文章: