V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
cool1205
V2EX  ›  Bitcoin

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

  •  
  •   cool1205 · 2021-04-10 17:56:35 +08:00 · 708 次点击
    这是一个创建于 1356 天前的主题,其中的信息可能已经有所发展或是发生改变。
    求助:python 如何调用 secp256k1.dll ,完成比特币椭圆曲率私钥到公钥的计算,最好有例子,感谢大佬不吝赐教
    5 条回复    2022-05-13 15:37:19 +08:00
    acess
        1
    acess  
       2021-04-11 02:18:17 +08:00
    python 不是有 pip 可以安装 libsecp256k1 么
    h4de5
        2
    h4de5  
       2021-04-15 09:36:56 +08:00
    精通比特币这本数里面就是用的 python 做示例。可以参考他的示例代码。github
    acess
        3
    acess  
       2021-04-16 22:51:49 +08:00
    @h4de5
    摘自 solidot:
    "著名的《 Mastering Bitcoin 》(《精通比特币》)一书中有段 Python 代码有误( key-to-address-ecc-example.py ),这段代码被广为流传。这个错误有极高的概率会根据一个正确的私钥生成一个错误的压缩公钥,从而产生一个错误的比特币收款地址,如果使用这个地址会导致比特币资金丢失。”
    yangbin9317
        4
    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
        5
    yangbin9317  
       2022-05-13 15:37:19 +08:00
    @yangbin9317 额 为什么刷到了去年的
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2810 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 15:09 · PVG 23:09 · LAX 07:09 · JFK 10:09
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.