在本地存储和加密密码

Store and encrypt a password locally

我正在为需要使用用户名和密码进行身份验证的服务编写 QML 客户端。目前我正在使用 c++ 插件来加密和解密密码,但我想用纯 QML 替换它以避免特定于平台的二进制文件。

不可行:

不时会有这类问题(只需搜索 Whosebug)并且 - 基本上一旦 data/code 驻留在客户端,客户端就可以访问它们。你可以让它变得更难。 (我知道你希望得到另一个答案,但根据你的问题,你已经发现放置 "Not an option" 要求,你 运行 没有选择)

许多答案建议使用凭据保险库服务,但您也需要在客户端某处拥有服务凭据。

(只需搜索一些公司在 DRM 上投入了多少资金以及它保持完好多久)

您确实可以在某处加密/隐藏凭据,但您需要有可用的位置和解密密钥。根据我的经验,一旦配置中的凭据不是明文,大多数用户都会放弃,但很难阻止"dedicated user"。

最后 - 恕我直言,你可以用有限的 time/budget 做的最好的事情是 hide/encrypt 使他们不在众目睽睽之下的凭据:(

如果你想加密/解密某些东西 - 它似乎可以 - 那么你将不得不在某处.

存储或计算密钥

使用 system-protected 存储是一种选择,可能由 TPM 支持。您还可以在启动时要求 单独的 密码来创建您自己的密钥库。如果您只想在集成期间而不是在编码期间提供密码,那么将密码存储在配置文件中可能是一种选择。

最后,您需要一个密钥来解密。您不能只使用另一个密钥来解密解密密钥,因为您会遇到同样的问题:保护密钥。所以你确实需要在你自己的应用程序之外寻找解决问题的方法;需要某种输入或资源。