python ecdsa получить закрытый и открытый ключ

Этот вопрос может показаться простым для тех, кто знаком с библиотекой. Как получить фактическое значение закрытого и открытого ключей? У меня есть:

private_key = SigningKey.generate(SECP256k1)
public_key = private_key.get_verifying_key()
print("private_key:")
print(private_key)
print("public_key:")
print(public_key)

И печатает:

generate_keys() private_key: public_key: VerifyingKey.from_string(b'\x029q\xfd\xe9\x1dL\xc0\xab\xb1\xd2GG\xef8\xcb\x89\xce\xbb\xa8\x10*\xfa\xda\x0c \x92\x12\xa5\xa0\x81\xef\x07\x9e', SECP256k1, sha1) (, VerifyingKey.from_string(b'\x029q\xfd\xe9\x1dL\xc0\xab\xb1\xd2GG\xef8\xcb \x89\xce\xbb\xa8\x10*\xfa\xda\x0c\x92\x12\xa5\xa0\x81\xef\x07\x9e', SECP256k1, sha1))

Мне нужны реальные значения private_key и public_key. Как мне их получить?


person Alejandro Veintimilla    schedule 06.11.2019    source источник


Ответы (1)


Вы правильно сгенерировали закрытый и открытый ключи. Теперь у вас есть экземпляры класса. Эти экземпляры не обязательно печатаются так, как вы ожидаете - я думаю, это ваша единственная проблема.

Если вы хотите увидеть формат PEM, вы должны сделать это:

private_key = SigningKey.generate(SECP256k1)
public_key = private_key.get_verifying_key()
print("private_key:")
print(private_key.to_pem())
print("public_key:")
print(public_key.to_pem())

Для формата DER используйте to_der(). Для необработанных байтов используйте to_string().

Если вы передаете ключ кому-то, кошельку, openssl и т. д., вам, вероятно, нужен формат PEM.

person Bill Huneke    schedule 07.11.2019