ecdsa,python中的正确编码

2024-06-06 05:43:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我按照技术说明如何创建比特币钱包。在

上面写着:

private_key = 18E14A7B6A307F426A94F8114701E7C8E774E7F9A47E2C2035DB29A206321725

1-取生成的相应公钥(65字节,1字节0x04,32字节对应X坐标,32字节对应Y坐标)

^{pr2}$

以及我在python3.5.2中的代码:

from ecdsa import SigningKey, SECP256k1

private_key = '18E14A7B6A307F426A94F8114701E7C8E774E7F9A47E2C2035DB29A206321725'

x = SigningKey.from_string(private_key, curve=SECP256k1)
print(x)

错误:

output = ERROR: assert len(string) == curve.baselen, (len(string), curve.baselen)
builtins.AssertionError: (64, 32)

我真的不知道该怎么做,因为任何操作都会返回不同的public_key。有什么办法解决这个问题吗?在


Tags: key代码fromstringlen字节private技术
1条回答
网友
1楼 · 发布于 2024-06-06 05:43:16

您在上面的例子中使用的私钥似乎是十六进制格式。功能

^{1}$

接受字符串私钥。因此,与传递十六进制格式的私钥不同,您必须传递一个字符串版本

下面是我试过的,看起来效果不错

^{pr2}$

这将成功返回ecdsa签名密钥对象

<ecdsa.keys.SigningKey object at 0x103a53f60>

相关问题 更多 >