0

我的主要目标是生成仅提供两个输入的签名:

signHash('aea0dadad42f18df8d340222d0f806b350d287075a2d5bba542bd0299157ba9a', '5KJnx9SacpzY5CoKYYCmX6bHiqnSSXtjnvNzztYNWVdZNMyb2yM')
//output: SIG_K1_K1rdJKaiaQDVvXhGh9gypMS4HLuoHEqKPGcFm6Hu9sVQJJffxfnhmEpNVe3hy3sznzPQUuyfKcfkUxJYULzGvCTQVHYnWj

这个确切的功能已经在这个库中作为一个 npm 模块实现,但我需要在 python 中使用它。

我试图找到这个功能的一个端口,但没有运气。

之后,我尝试使用 python 中提供的签名工具。

我当前的代码:

from beemgraphenebase.account import PasswordKey
import ecdsa
from binascii import hexlify, unhexlify
import base58

msg = 'aea0dadad42f18df8d340222d0f806b350d287075a2d5bba542bd0299157ba9a'
password_key = PasswordKey('testing@gmx.ch', '12345678', role='owner').get_private_key()

// password_key == '5KJnx9SacpzY5CoKYYCmX6bHiqnSSXtjnvNzztYNWVdZNMyb2yM'

secret = unhexlify(repr(password_key))

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

signature = sk.sign_digest_deterministic(unhexlify(msg))

print(base58.b58encode(signature))

#output: 7zaVJGX2c9RYu796AQ6kXzyX8XdNufAYcxgpFfKReYWpk5joRmWRxPEeZLW13dgYNhzqUNeS6n9F3efn2snSq17

由于 js 库总是提供相同的结果,我假设签名必须几乎相同。

我对密码学和签名数据非常陌生,所以我可能遗漏了一些非常关键的东西并且无法弄清楚。

我最后的手段是使用某种胶带并在 python 中使用那个 js 库,但谁真的想去那里。

4

0 回答 0