2015-07-13 576 views

回答

0

如果您关心安全性,则不应存储您的密码。但是,您可以使用MD5和HASH进行加密,然后将结果输入到QSettings。

以下是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

相关问题