我有一个关于我正在尝试编写的脚本的问题,该脚本会为比特币格式生成密钥对 . 我来到生成随机私钥并生成公钥 . 我知道(或者真的想多少?)我的第一部分代码是正确的 . 当我转到bitaddress.org并检查我生成的私钥以获取详细信息时,我总是得到正确生成的公钥 .
这就是我现在拥有的
import os
import ecdsa
import binascii
private_key = binascii.hexlify(os.urandom(32)).decode()
print("private key = " + private_key)
Private_key = bytes.fromhex(private_key)
signing_key = ecdsa.SigningKey.from_string(Private_key, curve = ecdsa.SECP256k1)
verifying_key = signing_key.get_verifying_key()
public_key = bytes.fromhex("04") + verifying_key.to_string()
print ("public key = " + public_key.hex())
问题是,现在我得到130个字符的公钥,我想将其转换为比特币地址 . 我不明白该怎么做 . 我需要做一些编码/解码,但无法绕过它 . 这是我发现的互联网的解释,但没有理解:
Bitcoin address explanation png
有人可能会帮我这个
1 回答
此代码在Python 2和Python 3中运行 . 它不仅打印比特币地址,还打印一些中间值 . 公钥是 pubkey 变量中的130十六进制字符串 .
请注意there are two possible and valid bitcoin addresses for each public key:未压缩和压缩的表单 . 更改 compress_key 布尔变量以提取每个变量 .