Невозможно расшифровать закрытый ключ ED25519, сгенерированный с помощью криптографического модуля Python в ssh-keygen.Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Невозможно расшифровать закрытый ключ ED25519, сгенерированный с помощью криптографического модуля Python в ssh-keygen.

Сообщение Anonymous »

1. Минимальный код Python

Код: Выделить всё

import os
from stat import S_IRUSR
from stat import S_IWUSR

from cryptography.hazmat.primitives.asymmetric import ed25519
from cryptography.hazmat.primitives.serialization import BestAvailableEncryption
from cryptography.hazmat.primitives.serialization import Encoding
from cryptography.hazmat.primitives.serialization import PrivateFormat

if __name__ == "__main__":
private=ed25519.Ed25519PrivateKey.generate()
secret="123456".encode()

a="./ed-pkcs8"
with open(a, "wb") as f:
contents=private.private_bytes(
Encoding.PEM,
PrivateFormat.PKCS8,  # OpenSSH works. RSA works with both.
BestAvailableEncryption(secret))
f.write(contents)
os.chmod(a, S_IRUSR | S_IWUSR)
2. Тестирование и ожидания с помощью ssh-keygen

Код: Выделить всё

python keytest.py

ssh-keygen -y -f ed-pkcs8
(введите 123456, нажмите ENTER)
Я ожидал, что содержимое ключа появиться (в незашифрованном виде). Вместо этого я получаю сообщение об ошибке «Загрузить ключ «ed-pkcs8»: для расшифровки закрытого ключа указана неверная парольная фраза».
3. Альтернативы, которые работают
  • Замена PrivateFormat.PKCS8 на PrivateFormat.OpenSSH. Но опять же, конечно, генерируется другой формат.
  • Генерируется RSA (вместо ED25519).
  • Если я перезагружаю файл в Сам модуль шифрования Python использует метод load_pem_private_key (вместо использования ssh-keygen).
Что я делаю не так? Это несовместимость ssh-keygen с модулем? Нужно ли мне делать что-то еще? Спасибо.
Возможно, я что-то не так понимаю, но опять же, я не знаком с OpenSSH, поэтому не могу комментировать.
(Версии )
  • Darwin Laptop-david.local 24.1.0 Darwin Kernel Version 24.1.0: четверг, 10 октября, 21:03:15 по тихоокеанскому летнему времени 2024 г.; root:xnu-11215.41.3~2/RELEASE_ARM64_T6000 Arm64
  • Python 3.13.0 [ cffi==1.17.1, cryptography==43.0.3, pycparser==2.22, bcrypt== 4.2.0 ]
  • OpenSSH_9.8p1, LibreSSL 3.3.6 (несмотря на ограничения)


Подробнее здесь: https://stackoverflow.com/questions/791 ... -module-in
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»