2015-07-13 13 views
3

Как я могу сохранить пароль в своем приложении Qt?Как я могу сохранить пароль в своем приложении Qt?

Нет ли готовой к использованию библиотеки от Qt?

В настоящее время я сохраняю все свои конфигурации приложений с помощью QSettings.

+2

Каковы ваши требования безопасности? Вы собираетесь хранить только пароль или его хэш? Где вы хотите его сохранить? – demonplus

ответ

0

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

Вот пример результата (формат Hex) для QSettings;

QString result = QString(QCryptographicHash::hash(("GoGuD"),QCryptographicHash::Md5).toHex()); 
+1

Хранение несоленых паролей позволяет распахнуть двери для атаки радужного стола. Пожалуйста, добавьте соль в хеш-значение. –

+0

Как сказал @demonplus, каково его требование безопасности? Конечно, он также может использовать $ salt + $ pepper, также возможно хеширование MAC. – goGud

+0

Как я должен зашифровать хеш-код md5 в случае, если я храню пароль для стороннего сервиса?) – Galbarad

-2

Ну, так что вы хотите каким-то образом зашифровать свой пароль. Проблема в том, что вам нужен пароль для расшифровки вашего пароля: |

Что вы можете сделать, если используете Linux с gnome (например, ubuntu), использовать gnome-keyring. Или другое обслуживание брелока. Таким образом, вы разблокируете свой системный ключ при входе в систему с помощью главного пароля и сохраняете все сохраненные пароли. По крайней мере, приложений, которые его поддерживают. В windows/mac может быть встроенный брелок, который вы можете использовать, но у меня нет опыта с этим.

+0

Замечательная вещь о паролях заключается в том, что никому не нужно знать, что они на самом деле - кроме человека, который использует пароль. Вам не нужно хранить фактические пароли, зашифрованные или нет. Вы хотите сохранить что-то, что может быть использовано для проверки правильности пароля. Это известно как хэш пароля. Это позволяет избежать необходимости хранить сам пароль. Хэши - односторонние функции: невозможно узнать, что такое пароль, глядя только на его хэш. Вы можете попробовать различные пароли и посмотреть, не слишком ли они хеш для одного и того же, но есть много таких возможностей. –

+0

Ну, да, но это требует, чтобы любая служба, которую вы аутентифицируете, принимала хеш, а не пароль. Но вы правы, большинство сервисов требуют хеша в наши дни. –

+1

Я думаю, что путаница здесь заключается в том, является ли вопрос о проверке пароля для использования приложения или о сохранении пароля для какого-либо удаленного api. –

0

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

Один из возможных способов: SimpleCrypt библиотека. В проекте есть хорошие документы и примеры использования.

0

Посмотрите на https://github.com/frankosterfeld/qtkeychain/. Он работает на Mac, Windows, Linux и имеет пример в исходном коде (см. Testclient.cpp).

+0

Предоставьте основное содержание своей ссылки в своем ответе, поэтому, если ссылка умерла, ваш ответ все равно будет отличным. – Mistalis