将 python 加密 EC 密钥转换为 OpenSSH 格式

Convert python cryptography EC key to OpenSSH format

我希望将使用加密模块生成的 EC 密钥转换为它们各自的 OpenSSH 字符串。喜欢

ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAhANiNlmyHtBUgaPXG+CtCVK8mQxBUtDjX3/nqqPZAHhduAAAAIE/JNDqLTeq9WVa5XWyU2Y7NJXfV54wakHmsP5gRNeh2

这是我用于生成 EC 密钥的代码

from cryptography.hazmat.backends import default_backend
from cryptography.hazmat.primitives.asymmetric import ec
key=ec.generate_private_key(ec.SECP256R1(), default_backend())

我尝试了以下方法。

numbers = key.private_numbers()
opensshpublic = 'ecdsa-sha2-nistp256' + base64.b64encode('nistp256' + numbers.public_numbers.x, numbers.public_numbers.y)

但这似乎不起作用。

我想应该有一种简单的方法可以做到这一点,但我遗漏了一些东西。

Cryptography 在 2016 年 6 月增加了对这样做的支持,可能如下

from cryptography.hazmat.primitives import serialization
key.public_bytes(serialization.Encoding.OpenSSH, serialization.PublicFormat.OpenSSH)

这提供了那些简洁的 OpenSSH public 密钥