2014-02-18 3 views
1

Я создал пару ключей rsa в C++ с использованием метода RSA_generate_key и напишу открытый ключ в отдельный файл. Когда я попытался зашифровать текст, используя этот открытый ключ через командную строку, я получаю сообщение об ошибке «Не удалось загрузить открытый ключ». Пожалуйста, кто-нибудь помочь мне в этом ...не удалось загрузить открытый ключ rsa, если он создан с использованием C++

команда используется для шифрования

openssl rsautl -encrypt -inkey public.pem -in myfile.txt -out file.ssl 

функция используется для генерации ключей

RSA_generate_key(1024,3,0,0); 

Спасибо.

ответ

0

Я создал пару ключей rsa в C++, используя метод RSA_generate_key и напишу открытый ключ в отдельный файл.

RSA_generate_key создает пару ключей. Что вы использовали для записи ключа в файл?


OpenSSL rsautl -encrypt -inkey public.pem -in myfile.txt отъезда file.ssl

I'am получение "Невозможно загрузить открытый ключ" ошибка.

Согласно документации OpenSSL на rsautil(1):

-inkey file 

    the input key file, by default it should be an RSA private key. 

Вы должны использовать -pubin:

-pubin 

    the input file is an RSA public key. 

функция используется для генерации ключей: RSA_generate_key(1024,3,0,0);

Вы должны использовать RSA_generate_key_ex. См. Документы OpenSSL по адресу RSA_generate_key(3).

+0

На самом деле я писал в файл, как и любой другой массив символов. Так что это был сбой. Теперь я использую PEM_write_PUBKEY(), он работает нормально. Пожалуйста, dnt mind для того, чтобы задать другой вопрос здесь .... Теперь у меня есть закодированные строками стробированные данные base64, я декодирую его с помощью BIO_f_base64() и сохраняю в массиве char (buffer). когда я использую этот буфер для дешифрования, RSA_private_decrypt() бросает «-1». Могли бы, пожалуйста, помочь мне в этом ....... – user3231632

+0

Обязательно сохраните закрытый ключ тоже с 'PEM_write_PrivateKey'. В противном случае вы не сможете расшифровать сообщение позже. – jww

+0

Я сохранил закрытый ключ, используя функцию PEM_write_PrivateKey для pri.key. Я сделал эхо "base64encodedstring" | base64 --decode >> a.txt и используется pri.key, чтобы расшифровать его с помощью командной строки. он работал отлично. но с помощью функции RSA_private_decrypt(), которая не может расшифровывать. Если вам нужно, я отправлю свой код. – user3231632

Смежные вопросы