为了账号安全,请及时绑定邮箱和手机立即绑定

ecdsa 签名密钥格式

ecdsa 签名密钥格式

慕工程0101907 2021-08-14 21:39:50
我正在尝试使用 python 创建一个公钥/私钥对。我使用以下方法创建了一个私钥:private_key = ''.join(['%x' % random.randrange(16) for x in range(0, 64)])使用此私钥,我尝试使用 ecdsa 图生成相应的公钥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 工作。运行脚本时出现以下错误: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)
查看完整描述

2 回答

?
慕标5832272

TA贡献1966条经验 获得超4个赞

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

private_key.decode('hex')

或者你可以使用

binascii.unhexlify

在python3中


查看完整回答
反对 回复 2021-08-14
  • 2 回答
  • 0 关注
  • 232 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号