python - 为什么 fastecdsa 和 secp256k1 会产生不同的签名?
问题描述
fastecdsa
Python 包支持 secp256k1 曲线。fastecdsa
使用 secp256k1 和secp256k1
包匹配从同一私钥生成的公钥。但是,签名不匹配:
import secp256k1
pk = secp256k1.PrivateKey(k.secret_exponent)
raw_sig = pk.ecdsa_sign(message, digest=blake2b_32)
sig = pk.ecdsa_serialize_compact(raw_sig)
print("secp lib sig: " + base58_encode(sig, b"spsig").decode())
import fastecdsa
from fastecdsa.ecdsa import sign
from fastecdsa.encoding.util import bytes_to_int, int_to_bytes
r, s = sign(msg=message, d=bytes_to_int(k.secret_exponent), curve=fastecdsa.curve.secp256k1, hashfunc=blake2b_32)
fsig = int_to_bytes(r) + int_to_bytes(s)
print(base58_encode(fsig, b"spsig"))
k.secret_exponent
来自包的 Key 类pytezos
,但在这种情况下并不重要,它只有 32 个字节。secp256k1
主要的是在和的调用中是相同的fastecdsa
。
base58_encode
也来自,我可以只输出具有相同结果的pytezos
字节。hex()
如果曲线相同,为什么签名会不同?
fastecdsa 1.7.3
secp256k1 0.13.2
解决方案
推荐阅读
- .htaccess - htacess 重写后,丑陋的 URL 一直显示在地址中
- opencv - 无法导入 scipy.misc.imsave 或 cv2.imwrite
- wireshark - 使用 PACKET_MMAP 的 PACKET_RX_RING 时出现大量丢包
- c# - Unity 实例化并添加对原始游戏对象的引用
- python - numpy 中列表的平均值
- tensorflow - Tensorflow 1.x 如何遍历给定张量的计算图?
- customization - Acumatica:定制项目之间的冲突
- javascript - 从单独的文件中调用另一个常量
- python - 与 Python dict 的组合 sum
- r - 交叉引用 bookdown::html_document2 不起作用