什么';在PyQt程序中存储密码和用户名的最佳实践是什么?

什么';在PyQt程序中存储密码和用户名的最佳实践是什么?,qt,python-3.x,Qt,Python 3.x,我正在用PyQt和Python3编写一个小程序 程序需要知道用于POP3协议的用户电子邮件帐户的用户名和密码。我想知道什么是最好的,希望不是太复杂的做法来存储这些东西 谢谢。< /P> < P> C++中,我会做以下的操作,你可以将它调整到Python 让 用户在线编辑输入的字符串 // Encrypt the password using SHA1 QByteArray passHash = QCryptographicHash::hash(password.toUtf8(),QCrypto

我正在用PyQt和Python3编写一个小程序

程序需要知道用于POP3协议的用户电子邮件帐户的用户名和密码。我想知道什么是最好的,希望不是太复杂的做法来存储这些东西


谢谢。< /P> < P> C++中,我会做以下的操作,你可以将它调整到Python

用户在线编辑输入的字符串

// Encrypt the password using SHA1
QByteArray passHash = QCryptographicHash::hash(password.toUtf8(),QCryptographicHash::Sha1 );
QString passHashString(passHash.toHex());
然后使用QSettings或任何您想要存储用户名和散列密码对的内容

每次用户尝试使用该应用程序时,您都可以对他为用户名提供的密码进行哈希运算,并将其与存储的密码进行比较


请注意,使用这种方法,每次执行应用程序时都必须输入密码。但在我看来,这比将密码存储在纯文本中更安全

据我所知,Qt不提供任何安全存储密码的功能


但是您可以查看,它应该允许您访问系统上可用的任何“密码存储库”,通过PyCrypto使用加密文件,或存储未加密的密码。

谢谢您的回答。我想keyring库就是我要找的。我发现keyring库还不支持python 3,那么还有其他支持python 3的方法吗?@spirtzhang我迟到了,但是在查看keyring的
setup.py
之后,我可以告诉你python 3是受支持的这是一个很好的密码解决方案,但不适用于存储刷新令牌之类的东西。这显然不允许使用存储的密码对另一个服务进行身份验证,例如POP3服务器。
// Encrypt the password using SHA1
QByteArray passHash = QCryptographicHash::hash(password.toUtf8(),QCryptographicHash::Sha1 );
QString passHashString(passHash.toHex());