c++ 如何在Qt应用程序中存储密码?

64jmpszr  于 10个月前  发布在  其他
关注(0)|答案(4)|浏览(198)

如何在Qt应用程序中存储密码?
Qt没有现成的库吗?
目前,我通过QSettings存储所有应用程序配置。

8aqjt8rx

8aqjt8rx1#

看看https://github.com/frankosterfeld/qtkeychain/,它可以在Mac、Windows、Linux上运行,并且在源代码中有一个示例(参见testclient.cpp)。
从它的readme.md:

QtKeychain

QtKeychain是一个Qt API,用于安全地存储密码和其他机密数据。数据的存储方式取决于平台:

  • macOS:密码存储在macOS钥匙串中。
  • Linux/Unix:如果运行,则使用GNOME Keyring,否则QtKeychain尝试使用KWallet(通过D-Bus)(如果可用)。还支持Libsecret(桌面特定解决方案的通用API)。
  • 窗口:默认情况下,使用Windows凭据存储(需要Windows 7或更高版本)。将-DUSE_CREDENTIAL_STORE=OFF传递给cmake以禁用它。如果禁用,QtKeychain使用Windows API函数CryptProtectData加密用户登录凭据的密码。然后通过QSettings保存加密的数据。
  • Android和iOS:密码分别存储在Android密钥库系统和iOS密钥链中。

在不受支持的环境中,QtKeychain将报告错误。除非明确请求,否则它不会存储任何未加密的数据。

zlwx9yxi

zlwx9yxi2#

如果你只需要授权成员使用QCryptographicHash类。另一种情况下,例如创建与数据库的连接,你需要加密你的密码。
一个可能的方法是SimpleCrypt库。项目有很好的文档和使用示例。

wgmfuz8q

wgmfuz8q3#

如果您关心安全,您不应该存储您的密码。但是您可以使用MD5和HASH进行加密,然后将结果放入QSettings。
以下是QSettings的示例结果(十六进制格式);

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

字符串

voj3qocg

voj3qocg4#

好吧,所以你想以某种方式加密你的密码。问题是你需要一个密码来解密你的密码:|
如果你在Linux上使用gnome(如ubuntu),你可以使用gnome-keyring.或者其他的keyring服务。这样,你在登录时用主密码解锁你的系统范围的keyring,它存储了你所有保存的密码。至少,支持它的应用程序。在windows/mac上可能有一个内置的keyring,你可以使用,但我没有经验。

相关问题