Как лучше всего хранить пароль и имя пользователя в программе PyQt?

#qt #python-3.x

#qt #python-3.x

Вопрос:

Я пишу небольшую программу с PyQt и python 3.

Программе необходимо знать имя пользователя и пароль для учетной записи электронной почты пользователя, чтобы использовать протокол POP3. И мне интересно, какая лучшая и, надеюсь, не слишком сложная практика для хранения этих вещей?

Спасибо.

Ответ №1:

Насколько я знаю, Qt не предлагает ничего для безопасного хранения паролей.

Но вы можете посмотреть библиотеку ключей python, она должна позволить вам получить доступ к любому «хранилищу паролей», доступному в системе, использовать зашифрованный файл через PyCrypto или хранить пароль в незашифрованном виде.

Комментарии:

1. Спасибо за ответ. Я думаю, что библиотека keyring — это то, что я ищу.

2. Я обнаружил, что библиотека keyring еще не поддерживает python 3, так есть ли какая-либо альтернатива, поддерживающая python 3?

3. @SpiritZhang Я опаздываю, но, посмотрев на setup.py брелок, я могу сказать вам, что Python 3 поддерживается

Ответ №2:

Для C я бы сделал следующее, вы можете настроить его на python

Пусть

 QString username
QString password
 

Строки, которые пользователь вводит в режиме онлайн, редактируются,

 // Encrypt the password using SHA1
QByteArray passHash = QCryptographicHash::hash(password.toUtf8(),QCryptographicHash::Sha1 );
QString passHashString(passHash.toHex());
 

Затем используйте QSettings или что-то еще, что вы хотите, чтобы сохранить пару имени пользователя и хэшированного пароля.

Каждый раз, когда пользователь пытается использовать приложение, вы можете хэшировать пароль, который он вводит для имени пользователя, и сравнивать его с сохраненным.

Обратите внимание, что при использовании этого подхода пароль необходимо вводить каждый раз, когда выполняется ваше приложение. Но, на мой взгляд, это безопаснее, чем хранить пароль в виде обычного текста.

Комментарии:

1. это хорошее решение для паролей, но не будет работать для хранения таких вещей, как токены обновления.

2. Очевидно, что это не позволяет использовать сохраненный пароль для аутентификации в другой службе, например, на сервере POP3.