Каков наилучший способ шифрования текстового файла в C / C ++? - PullRequest
5 голосов
/ 27 июня 2009

Веб-приложение cgi на C / C ++ будет создавать временный текстовый файл на сервере, пока пользователь входит в систему. Текстовый файл будет удален при выходе пользователя из системы. Я хочу зашифровать этот текстовый файл, а также содержимое файла. Файл будет содержать такую ​​информацию, как имя пользователя и пароль.

Каков наилучший способ сделать это?

РЕДАКТИРОВАТЬ: я вижу библиотеки предлагается. Моя проблема в том, что я не могу использовать ничего, кроме стандартной библиотеки C ++.

Ответы [ 4 ]

4 голосов
/ 27 июня 2009

Используйте хорошо известную библиотеку, такую ​​как openssl, и следуйте хорошо известным примерам и держитесь подальше от решений, специфичных для платформы.

3 голосов
/ 28 июня 2009

Я думаю, вы могли бы поступить неправильно. Если целью является безопасность, реальная безопасность, то вы не захотите хранить пароль даже в зашифрованном виде (потому что его можно расшифровать, если ключ украден, как говорили другие люди).

Что вам нужно сделать, это сохранить хэш пароля (с соответствующей солью). Это означает, что никто (даже администраторы сайта) не может определить пароль пользователя. Они могут просто принять пароль и посмотреть, верный он или нет, хэшируя ввод той же солью (вы не можете изменить хеш).

Кроме того, такая ситуация прекрасно подходит для баз данных, вы ее используете?

Google хэши паролей с солями , и вы можете прочитать об этом у настоящих экспертов по безопасности (я не один).

2 голосов
/ 27 июня 2009

Стандарт шифрования, который в настоящее время считается «безопасным», - это AES (также называемый Rijndael). Вы можете найти реализацию C ++ в Codeproject и во многих других местах.

Обратите внимание, что при использовании AES или любого другого симметричного стандарта шифрования вы должны хранить ключ шифрования / дешифрования внутри своего приложения. Если кто-то обнаружит ключ, он может расшифровать все файлы, которые вы зашифровали с помощью этого ключа.

Если ваше приложение будет работать под Windows, вы также можете использовать DPAPI для хранения зашифрованной информации.

0 голосов
/ 27 июня 2009

Исправленный ответ .
Вы хотите, чтобы код шифровал и расшифровывал файл, который можно использовать с вашим кодом C ++.
Было бы абсолютно неправильно писать свой собственный код (, например, этот ).

Но вы говорите, что не можете использовать стандартные библиотеки.
Стандартные (и, возможно, с открытым исходным кодом) библиотеки, вероятно, являются наиболее правильным подходом для реализации шифрования в ваших приложениях. Если вы решите не делать этого, у вас останется только два варианта:

  • Реализация собственной версии стандартного алгоритма шифрования (и риск слабости при совершении любых ошибок)
  • Используйте «системный» вызов из вашего приложения и запустите стандартное шифрование (например, bcrypt ), которое (надеюсь) может быть доступно в вашей системе.

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


Старый : по какой-то причине я подумал, что требуется PHP-код ... моя ошибка.
В этой статье приведен пример симметричной программы шифрования PHP с использованием crypt для хранения пароля в текстовом файле.

Возможно связанные вопросы Stackoverflow

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...