【问题标题】:Python edcsa SECP256k1 is not signing correctlyPython edcsa SECP256k1 未正确签名
【发布时间】:2018-05-04 13:42:32
【问题描述】:

我使用https://github.com/warner/python-ecdsa 库来创建私钥和公钥。

我生成了那个键

private key = 'ffbd2d76fde8d62642379e507f4ab69883e094708410392d8470246146195e56'
public key = '04' + '615a523e41d5984d5afc18e5adddddfa0ab8ac63b49933ff1b07fae90604fa6cdd6572996117b3ffce6e1258668c88fc2aad3c45eab31ef8a57b5176c91b272a'

签名数据

message = 'aaa'
signHex = privateKey.sign(message,hashfunc=hashlib.sha256).encode("hex")
# signHex : afe2f94df735d1d0c571c9c10dbd3e9271ad1dd4e6c5d523901324c01a4de25e5b9825f8de3fffeebd477f575c83997998df32e8b0a7053b5a43813f269bd4ee

当我在 js 在线工具中使用我的钥匙检查标志时,它说您的标志无效。我还用相同的键生成了符号,并在这个工具中检查了 java 符号,它说它是有效的符号。为什么在线工具说 python ecdsa 标志的标志无效。 python for sign有什么问题?

在线工具:https://kjur.github.io/jsrsasign/sample/sample-ecdsa.html

【问题讨论】:

    标签: python cryptography digital-signature ecdsa


    【解决方案1】:

    我解决了问题。我添加了 sigencode=sigencode_der 参数,它工作正常。

    正确的符号代码:

    from ecdsa import SigningKey, VerifyingKey, SECP256k1
    from ecdsa.util import sigencode_der
    
    message = 'aaa'
    signHex = privateKey.sign(message,hashfunc=hashlib.sha256,sigencode=sigencode_der).encode("hex")
    # signHex = 3044022072ae5b5cf026796ee8217df26eb70f3dd72016f87af0a5fd8d6a99faf51e77f802206a77d3a3acc9540721f34e776b8feb7e2ea69e321d25872d3d65b7fd15c8132d
    

    【讨论】:

      猜你喜欢
      • 2019-09-24
      • 2013-05-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多