Я получил открытый ключ RSA от коллеги в виде файла pem:

-----BEGIN RSA PUBLIC KEY-----
MIIBCgKCAQEAwGbtPQW6k1S1N8GM4UDxwexV4M+5BHcjs/l397/Mjt/J9+yL4PMw
cdLTnO/PHwCne3DdWsxHoZA/MIHRF+K/d2yDJ8DWHIKtbbUx6/1NOoogauwx+Ush
hNsaT3BCCw+ruFiyPCNKE6JN98hdbiP/61Y9OPZw/9m3c0mMtDv0gtjLJ2Q1z308
DGDZOA3+fTo/PEAgoCycVl0WwwN+AFYsj4DRqIlnxbd0PTSqxVBV+T1oaNmN/8jl
E0zOyQNzOHhDFhJJMucodrUOIFmpWSX6Ff2sVaXY81z4oRq3KrVOK4LZkP6cpPdh
s4Qa6ztWuwJ1ZKK6jOZxF0U2015/4njvgQIDAQAB
-----END RSA PUBLIC KEY-----

Но когда я пытаюсь зашифровать простой текст на моем Mac

openssl rsautl -encrypt -pubin -inkey "/path/to/file/public.pem" -ssl -in "Some text to encrypt with public key" -out /path/to/EncryptedMessage.txt

OpenSSL выдает исключение

unable to load Public Key

Кроме того, проверка ключа

openssl rsa -text -pubin < "/path/to/file/public.pem"

также выдает исключение

unable to load Public Key
3106:error:0906D06C:PEM routines:PEM_read_bio:no start line:/BuildRoot/Library/Caches/com.apple.xbs/Sources/OpenSSL098/OpenSSL098-64.50.7/src/crypto/pem/pem_lib.c:648:Expecting: PUBLIC KEY

Открытый ключ был сгенерирован на Mac и преобразован в pem

ssh-keygen -f ~/.ssh/id_rsa.pub -m 'PEM' -e > public.pem

Сообщение об ошибке указывает на то, что открытый ключ не имеет допустимого формата. Так что я не понимаю и как я могу исправить ошибки?

редактировать

hexdump -C -n64 public.pem
00000000  2d 2d 2d 2d 2d 42 45 47  49 4e 20 52 53 41 20 50  |-----BEGIN RSA P|
00000010  55 42 4c 49 43 20 4b 45  59 2d 2d 2d 2d 2d 0a 4d  |UBLIC KEY-----.M|
00000020  49 49 42 43 67 4b 43 41  51 45 41 77 47 62 74 50  |IIBCgKCAQEAwGbtP|
00000030  51 57 36 6b 31 53 31 4e  38 47 4d 34 55 44 78 77  |QW6k1S1N8GM4UDxw|
00000040

Похоже, что ASCII без спецификации.

1 ответ1

3

Заголовок -----BEGIN RSA PUBLIC KEY----- показывает, что это файл PKCS # 1. OpenSSL ожидает файл PKCS # 8, который начинается с -----BEGIN PUBLIC KEY----- (обратите внимание на отсутствие RSA).

Вам нужно использовать опцию -RSAPublicKey_in чтобы openssl rsa преобразовала файл из файла PKCS # 1 в файл PKCS # 8:

openssl rsa -RSAPublicKey_in -pubin -in /path/to/file/public.pem -out /path/to/file/pkcs8.pem

Как только вы это сделаете, вы можете использовать свою первую команду, используя преобразованный файл.

Немного Googling предполагает, что версия OpenSSL на Mac может не иметь опции -RSAPublicKey_in , и в этом случае вам может потребоваться найти более новую версию, возможно, на другой ОС.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .