求助: Python 如何调用 secp256k1.dll,完成比特币椭圆曲率私钥到公钥的计算,最好有例子

2021-04-10 17:56:35 +08:00
 cool1205
求助:python 如何调用 secp256k1.dll ,完成比特币椭圆曲率私钥到公钥的计算,最好有例子,感谢大佬不吝赐教
707 次点击
所在节点    Bitcoin
5 条回复
acess
2021-04-11 02:18:17 +08:00
python 不是有 pip 可以安装 libsecp256k1 么
h4de5
2021-04-15 09:36:56 +08:00
精通比特币这本数里面就是用的 python 做示例。可以参考他的示例代码。github
acess
2021-04-16 22:51:49 +08:00
@h4de5
摘自 solidot:
"著名的《 Mastering Bitcoin 》(《精通比特币》)一书中有段 Python 代码有误( key-to-address-ecc-example.py ),这段代码被广为流传。这个错误有极高的概率会根据一个正确的私钥生成一个错误的压缩公钥,从而产生一个错误的比特币收款地址,如果使用这个地址会导致比特币资金丢失。”
yangbin9317
2022-05-13 15:36:50 +08:00
```
def public_key(private_key: int, compressed=True) -> bytes:
private_key = private_key.to_bytes(32, byteorder='big')
public_key = ecdsa.SigningKey.from_string(
private_key, curve=ecdsa.SECP256k1).get_verifying_key()
public_key = public_key.to_string()

if compressed:
mid = len(public_key) // 2
x = public_key[:mid]
y = public_key[mid:]
prefix = b'\x02' if y[-1] & 1 == 0 else b'\x03'
return prefix + x
else:
return b'\x04' + public_key
```

我这个行吗
yangbin9317
2022-05-13 15:37:19 +08:00
@yangbin9317 额 为什么刷到了去年的

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/769747

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX