python ecdsa 获取私有和 public 密钥

python ecdsa get private and public key

对于了解图书馆的人来说,这个问题似乎很简单。如何获取私钥和​​ public 密钥的实际值?我有:

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 实数值。我如何获得它们?

您已正确生成私钥和 public 密钥。您现在有 class 个实例。这些实例不一定按您期望的方式打印 - 我认为这是您唯一的问题。

如果您想查看 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 格式。