You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python3运行ecdsa签名密钥验证代码时报str拼接bytes错误如何解决

解决方案

错误原因

Python2中字符串与字节序列没有明确划分,Python3对str(Unicode字符串)和bytes(二进制字节序列)做了严格的类型隔离,不允许直接拼接两种不同类型的对象。
你使用的ecdsa.VerifyingKey.to_string()方法在Python3环境下返回的是bytes类型,而代码中'\x04'属于str类型,两类对象拼接直接触发了类型错误。

调整代码

只需要将'\x04'改为字节字面量(在引号前加b前缀)即可正常运行,修改后的完整代码如下:

#!/usr/bin/env python3

import codecs
import ecdsa

key = "bbe5b8853f51285a62f1276b72a162365f0a51c607e38cecb9bcffdf7284b2bc"

keyhex = codecs.decode(key, 'hex')

sk = ecdsa.SigningKey.from_string(keyhex, curve = ecdsa.SECP256k1)

vk = sk.get_verifying_key().to_string()

pk = b'\x04' + vk

如果后续需要将公钥转换为十六进制字符串使用,调用pk.hex()即可得到对应结果。

内容的提问来源于stack exchange,提问作者andrewz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 00:45:06