#python #cryptography #ecdsa
Вопрос:
Учитывая подпись и сообщение, должна быть возможность получить открытый ключ. Как это можно сделать с ecdsa
помощью библиотеки на python или, в более общем плане, как это можно сделать на python с использованием любой библиотеки?
Прямо сейчас у меня есть что-то вроде
from ecdsa import SigningKey, SECP256k1
sk = SigningKey.generate(curve=SECP256k1)
vk = sk.verifying_key
msg = b"Some arbitrary message"
signature = sk.sign(msg)
print("Signing (Private) key: ", sk.to_string().hex())
print("Verifying (Public) key: ", vk.to_string().hex())
print("Signature: ", signature.hex())
print(vk.verify(signature, msg))
это подписывает и подтверждает сообщение, которое отлично, но я ищу что-то вроде
vk2 = vk_from_signature(signature, msg, curve=SECP256k1)
if vk.to_string().hex() == vk2.to_string().hex():
print("SUCCESS")
Комментарии:
1. Восстановление открытого ключа описано в разделе 1, стр. 47 и здесь . Библиотека ecdsa предоставляет
Signature#recover_public_keys()
метод, который определяет ключи-кандидаты. Для дополнительной поддержки, вероятно, представляют интерес библиотеки Python с отношением к биткоину или Эфириуму .