首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ecdsa签名密钥格式

ecdsa签名密钥格式
EN

Stack Overflow用户
提问于 2018-11-11 21:35:17
回答 1查看 2.6K关注 0票数 1

我正在尝试使用python创建一个公钥/私钥对。

我使用以下方法创建了一个私钥:

代码语言:javascript
复制
private_key = ''.join(['%x' % random.randrange(16) for x in range(0, 64)])

使用此私钥,我尝试使用ecdsa图生成相应的公钥。

代码语言:javascript
复制
def privateKeyToPublicKey(s):
    sk = ecdsa.SigningKey.from_string(s, curve=ecdsa.SECP256k1)
    vk = sk.verifying_key
    return ('\04' + sk.verifying_key.to_string())

由于格式化错误,我无法创建签名密钥(sk),因为我的字符串格式错误。但是,我不确定字符串s应该如何/什么格式才能使SigningKey工作。

在运行脚本时,我会得到以下错误:

代码语言:javascript
复制
Traceback (most recent call last):
  File "address.py", line 23, in <module>
    privateKeyToPublicKey(private_key)
  File "address.py", line 20, in privateKeyToPublicKey
    sk = ecdsa.SigningKey.from_string(s, curve=ecdsa.SECP256k1)
  File "/usr/local/lib/python3.6/dist-packages/ecdsa/keys.py", line 
149, in from_string
    assert len(string) == curve.baselen, (len(string), curve.baselen)
AssertionError: (64, 32)
EN

回答 1

Stack Overflow用户

发布于 2018-11-11 21:54:05

我已经意识到了我的错误,输入必须是字节,私钥必须是十六进制格式。在python2中,您可以使用:

代码语言:javascript
复制
private_key.decode('hex')

或者你可以用

代码语言:javascript
复制
binascii.unhexlify

在python3中

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53253464

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档