我希望将使用加密模块生成的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)
但这似乎不起作用。
我想应该有一个简单的方法来做到这一点,但我错过了一些东西。
答案 0 :(得分:0)
Cryptography在2016年6月增加了对此操作的支持,可以如下
from cryptography.hazmat.primitives import serialization
key.public_bytes(serialization.Encoding.OpenSSH, serialization.PublicFormat.OpenSSH)
这给出了那些整洁的OpenSSH公钥