如何在Qt应用程序中存储密码?Qt没有现成的库吗?目前,我通过QSettings存储所有应用程序配置。
8aqjt8rx1#
看看https://github.com/frankosterfeld/qtkeychain/,它可以在Mac、Windows、Linux上运行,并且在源代码中有一个示例(参见testclient.cpp)。从它的readme.md:
QtKeychain是一个Qt API,用于安全地存储密码和其他机密数据。数据的存储方式取决于平台:
在不受支持的环境中,QtKeychain将报告错误。除非明确请求,否则它不会存储任何未加密的数据。
zlwx9yxi2#
如果你只需要授权成员使用QCryptographicHash类。另一种情况下,例如创建与数据库的连接,你需要加密你的密码。一个可能的方法是SimpleCrypt库。项目有很好的文档和使用示例。
QCryptographicHash
SimpleCrypt
wgmfuz8q3#
如果您关心安全,您不应该存储您的密码。但是您可以使用MD5和HASH进行加密,然后将结果放入QSettings。以下是QSettings的示例结果(十六进制格式);
QString result = QString(QCryptographicHash::hash(("GoGuD"),QCryptographicHash::Md5).toHex());
字符串
voj3qocg4#
好吧,所以你想以某种方式加密你的密码。问题是你需要一个密码来解密你的密码:|如果你在Linux上使用gnome(如ubuntu),你可以使用gnome-keyring.或者其他的keyring服务。这样,你在登录时用主密码解锁你的系统范围的keyring,它存储了你所有保存的密码。至少,支持它的应用程序。在windows/mac上可能有一个内置的keyring,你可以使用,但我没有经验。
4条答案
按热度按时间8aqjt8rx1#
看看https://github.com/frankosterfeld/qtkeychain/,它可以在Mac、Windows、Linux上运行,并且在源代码中有一个示例(参见testclient.cpp)。
从它的readme.md:
QtKeychain
QtKeychain是一个Qt API,用于安全地存储密码和其他机密数据。数据的存储方式取决于平台:
在不受支持的环境中,QtKeychain将报告错误。除非明确请求,否则它不会存储任何未加密的数据。
zlwx9yxi2#
如果你只需要授权成员使用
QCryptographicHash
类。另一种情况下,例如创建与数据库的连接,你需要加密你的密码。一个可能的方法是
SimpleCrypt
库。项目有很好的文档和使用示例。wgmfuz8q3#
如果您关心安全,您不应该存储您的密码。但是您可以使用MD5和HASH进行加密,然后将结果放入QSettings。
以下是QSettings的示例结果(十六进制格式);
字符串
voj3qocg4#
好吧,所以你想以某种方式加密你的密码。问题是你需要一个密码来解密你的密码:|
如果你在Linux上使用gnome(如ubuntu),你可以使用gnome-keyring.或者其他的keyring服务。这样,你在登录时用主密码解锁你的系统范围的keyring,它存储了你所有保存的密码。至少,支持它的应用程序。在windows/mac上可能有一个内置的keyring,你可以使用,但我没有经验。