C++ 在cpp应用程序中保存密码
在嵌入式linux上运行C++ 在cpp应用程序中保存密码,c++,qt,embedded-linux,C++,Qt,Embedded Linux,在嵌入式linux上运行Qt应用程序,需要存储用户名、密码等敏感信息 我目前正在使用QStringLiteral存储此信息。这样做安全吗?当针对字符串二进制文件运行时,这些文件不可见。可用的选项/解决方案有哪些 SqlCipher可用,但它同样需要密码/密钥。任何建议您都不应该存储密码!无论是在Qt中还是在其他任何地方,都无法安全地做到这一点 我建议您生成一个随机数/salt,添加用户的密码,并对该数据运行安全哈希。例如MD5,甚至更好的SHA1(感谢Ted Lynmo)。存储结果。然后,您甚至
Qt
应用程序,需要存储用户名、密码等敏感信息
我目前正在使用QStringLiteral
存储此信息。这样做安全吗?当针对字符串二进制文件运行时,这些文件不可见。可用的选项/解决方案有哪些
SqlCipher
可用,但它同样需要密码/密钥。任何建议您都不应该存储密码!无论是在Qt中还是在其他任何地方,都无法安全地做到这一点
我建议您生成一个随机数/salt,添加用户的密码,并对该数据运行安全哈希。例如MD5,甚至更好的SHA1(感谢Ted Lynmo)。存储结果。然后,您甚至可以获取一个纯文本文件,因为很难从该数据恢复到原始密码
如果安全性对您来说不是那么大,您可以使用以下内容:
QString result = QString(QCryptographicHash::hash((password+salt),QCryptographicHash::Md5).toHex());
并将结果保存在QSettings中。您不应该存储密码!无论是在Qt中还是在其他任何地方,都无法安全地做到这一点
我建议您生成一个随机数/salt,添加用户的密码,并对该数据运行安全哈希。例如MD5,甚至更好的SHA1(感谢Ted Lynmo)。存储结果。然后,您甚至可以获取一个纯文本文件,因为很难从该数据恢复到原始密码
如果安全性对您来说不是那么大,您可以使用以下内容:
QString result = QString(QCryptographicHash::hash((password+salt),QCryptographicHash::Md5).toHex());
并将结果保存在QSettings中。如果有人可以读取您的二进制文件,他们可以计算出凭据。QStringLiteral可能只将其存储为UTF-16字符串。您的嵌入式平台是否有某种安全的enclave可供使用?如果有人可以读取您的二进制文件,他们可以计算出凭据。QStringLiteral可能只将其存储为UTF-16字符串。您的嵌入式平台是否有某种可以使用的安全enclave?OP的程序如何找回密码?我不再推荐MD5了。SHA1可能是因为它是一个嵌入式系统,否则是SH256,但是+1。它本身应该无法获取密码。没有人应该这样做。每当它要验证某人的密码时,它都会使用salt+提供的密码,然后比较两个散列结果。@manuell看一下Ted Lyngmo的评论:程序应该永远无法找回密码!没有人能做到这一点。@TedLyngmo你是对的,MD5不再那么安全,我也更喜欢SHA1。我将编辑我的答案。OP的程序如何找回密码?我不再推荐MD5了。SHA1可能是因为它是一个嵌入式系统,否则是SH256,但是+1。它本身应该无法获取密码。没有人应该这样做。每当它要验证某人的密码时,它都会使用salt+提供的密码,然后比较两个散列结果。@manuell看一下Ted Lyngmo的评论:程序应该永远无法找回密码!没有人能做到这一点。@TedLyngmo你是对的,MD5不再那么安全,我也更喜欢SHA1。我将编辑我的答案。