Разобрать пару ключей RSA из строки в Python

Я пытаюсь сгенерировать / прочитать пару ключей RSA из publicKey и privateKey в виде строки.

Что-то вроде этого:

priK = "-----BEGIN RSA PRIVATE KEY-----MIIBOQIBAAJAVJhUS0gLqXLOmVv2xG23oFPwim9+rVxGhLUXqKShQCvB3iRMOHn7/GNJumpwmnglcsNXuqAhN0OxqKGGJdtYdwIDAQABAkBP0VrXnSbDvvuIX+k59Xvo3sp7FDAmSoaO+H9WM9+ht5H/f/geIrSEXSIkFLnzniMwtOJ422GmkDkL1F67HuDhAiEAlNauDiq3RqoXufbauyPEOG9fMS2pvB+auT2XCHJhhKsCIQCRgIo7WIRZYnNpNRWaoppUQK3g+aM8sdeBYpbs2nwDZQIgZXIxrmxFAUAb7d+oVFdbfc/DRSTHhPbRoaKuF87GUwMCIFmzaATsLjO42TPMETSS+BfnBAtFe5hIf3Z5pFgC3h9tAiEAgYjug92fmVvE+CcRSg6at7meSEbK/Kxg7Ar4mlkXMlI=-----END RSA PRIVATE KEY-----"

pubK = "-----BEGIN PUBLIC KEY-----MFswDQYJKoZIhvcNAQEBBQADSgAwRwJAVJhUS0gLqXLOmVv2xG23oFPwim9+rVxGhLUXqKShQCvB3iRMOHn7/GNJumpwmnglcsNXuqAhN0OxqKGGJdtYdwIDAQAB-----END PUBLIC KEY-----"

keyPair = RSA.importKey(priK + pubK)

Моя ошибка, которую я получаю:

in importKey
    if lines[1].startswith(b('Proc-Type:4,ENCRYPTED')):

Я даже не знаю, возможно ли это так. Я действительно не нашел информацию об этом.

1 ответ

Решение

RSA.importKey(key) импортирует один ключ. Он не может импортировать сцепленные ключи.

Если вы импортируете закрытый ключ, вы можете извлечь из него открытый ключ, потому что общий формат PKCS#1 и PKCS#8 содержит всю необходимую информацию для создания открытого ключа. Таким образом, вам даже не нужно объединять открытый ключ к нему.

Использование:

privateKey = RSA.importKey(priK)
publicKey = privateKey.publickey()
Другие вопросы по тегам