2015-06-20 10 views
3

Основная проблема заключается в том, что я совершенно новичок в C, и документация OpenSSL для меня недостаточно ясна, я пробовал использовать Reading and writing rsa keys to a pem file in C, но я не совсем понимаю. Например, как функция create_rsa_key() создает как частную, так и общественную? А где pCipher? И в чем смысл pcszPassphrase?Создать открытый/закрытый ключ RSA с OpenSSL?

Я объясню, как если бы это был какой-то псевдокод, это то, что я хочу сделать, и части, выделенные жирным шрифтом те, я не знаю, как это сделать:

  • генерировать закрытый ключ и открытый ключ в качестве буферов в шестнадцатеричном (клиент)
  • отправить открытый ключ другой конечной точки безопасно (клиент)
  • шифрования некоторых данных со случайным 256 битным паролем с помощью AES256 CBC (сервер)
  • шифровать p assword с помощью открытого ключа (сервер)
  • отправить шифрованные данные клиенту (сервер)
  • расшифровать зашифрованные 256-битного пароль с помощью секретного ключа (клиент)
  • расшифровать файл

В основном я знаю, как обрабатывать шифрование/дешифрование AES и протокол связи, они уже реализованы в любом случае, моя проблема - RSA, и мне нужен шестнадцатеричный формат not base64 или pem, поскольку я работаю с сокетами, а также отправляю и сохраняю двоичные данные.

+0

Кстати, я старался быть простым, я знаю, что в моем блочном примере есть утечки безопасности, но гораздо больше, чем я говорю здесь. – Onza

+0

Под «шестнадцатеричным форматом» вы подразумеваете кодировку ASN.1, правильно? (из которых все базовые PEM действительно становятся заголовком, нижним колонтитулом и кодировкой base64 ключа ASA RSA). Это все, что ты действительно на самом деле? – WhozCraig

+0

Да, извините, я забыл http://etherhack.co.uk/asymmetric/docs/rsa_key_breakdown.html – Onza

ответ

1

Как обсуждалось в IRC, ответ на вопрос create_rsa_key адресуется https://stackoverflow.com/a/29589818/37923 - он не предназначен для работы таким образом.

pcszPassphrase предназначен для ввода пароля/фразы для защиты секретного ключа. Он будет предоставлен пользователем, но это не является обязательным требованием.

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