【问题标题】:Is this possible to edit embedded resources in Qt application?这可以在 Qt 应用程序中编辑嵌入式资源吗?
【发布时间】:2012-03-22 09:07:03
【问题描述】:

我正在使用 Qt 资源系统来存储 GUI 中使用的图像和数据库的加密密码。我想存储密码并让用户更改密码。应用程序应该能够记住密码。所以我想将新创建的加密密码存储在应用程序本身中(与嵌入资源的方式相同)。

目前我在编译时将密码文件保存在应用程序资源中。并且编译后密码是不可更改的。

【问题讨论】:

标签: qt4 embedded-resource


【解决方案1】:

你想要做的是非常糟糕的风格。应用程序永远不需要修改自己的可执行文件。在管理良好的系统中,应用程序的用户无论如何都不能写入安装目录。使用 QSettings,这就是它的用途。如果您真的愿意,可以将其存储在 .ini 文件而不是注册表中。

确保您对密码使用单向函数 - 加密强度高的散列,不是加密。根据定义,加密是双向的:您可以先加密,然后再解密。如果您认为自己是专业人士,那么您永远不会希望将加密一词与单向函数(哈希)互换使用。它们是非常不同的东西,你会而且应该被责骂——我怎么知道你的真正意思,无论你只是对你的语言松散,还是提出一些本质上不安全的建议。

使用密码,您永远不会希望允许解密。如果有人提供密码进行检查,您将加密,然后比较加密版本。这样一来,就很难恢复原始密码(Vinnie 可能在人力资源部使用她的 Facebook 帐户和老板的公司银行帐户)。确保对哈希进行加盐以防止彩虹表攻击。您可能应该确保自己知道自己在做什么:在该领域进行自我教育。没有人与生俱来。让我们避免另一种自制的不安全密码方案......它们太多了,由那些认为在不了解该主题的情况下,他们会以某种方式产生相当安全的应用程序的人完成。唉,现实不能在这里被愚弄,不知道通常意味着确实知道的人最终会查看你的代码(也许是逆向工程),然后嘲笑它......结束咆哮。

【讨论】:

  • +1 用于建议 QSettings。这正是它的用途。平台无关设置
  • 感谢您的信息。目前,当用户第一次使用 QSetting 输入密码时,我正在保存散列密码。然后每次用户输入密码时,我都会对新输入的密码进行哈希处理,并将结果与​​保存的密码进行比较。这里有一些问题: 1. 散列密码对每个人都是可见的,而且 MD5 散列很容易被破解。 2. 两个不同的密码可能有相同的哈希值。
  • 1.使用加密等级哈希。我不能告诉你MD5是否“容易破解”,你应该能够弄清楚。 2. 这不是问题。那么如果哈希值发生冲突怎么办?有大量密码具有任何给定的哈希值——找到它们需要进行详尽的搜索。因此,您具有不可行的安全性。找到那些相同的哈希密码需要“很长时间”。这是目前最先进的。
【解决方案2】:

Sorush:这里有几个不太美观但技术性更强的答案:

在 Windows 上,由于操作系统不允许您在运行时编辑可执行文件,这很难做到:https://stackoverflow.com/a/1954479/58133

在 Linux 上,可能可行:http://www.overclockers.com/forums/archive/index.php/t-195048.html

【讨论】:

    猜你喜欢
    • 2016-06-16
    • 2011-01-15
    • 2018-09-21
    • 2011-07-05
    • 1970-01-01
    • 2012-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多