9

在我的最后一个问题“用于存储机密的便携式数据库”中,到目前为止,最好的答案告诉使用 sqlite-crypt。

阅读 sqlite-crypt 文档,打开数据库的新参数是密码。当然,我不想硬编码密码,所以我在想什么是存储密码的最佳、简单和快速的方法?

4

4 回答 4

11

一些选项。

  1. 向用户询问密码(也就是他们记住一个密码以获取所有密码)(好主意)

  2. 在应用程序的第一次启动时创建一个密钥,然后以您自己独特的方式对其进行哈希处理(坏主意)

  3. 混合使用上述方法,也就是给用户一个或两个选项(记住我的密码复选框)

于 2009-02-17T01:24:16.913 回答
3

必须将其存储在用户中。

否则,您只是用其他一些安全机制代替您要询问的安全机制...


大卫在评论 Infamy 的回答中的观点很好。应该允许一些灵活性,以防用户在较低层处理保护......所以,去投票给 Infamy。

于 2009-02-17T01:17:55.493 回答
2

硬编码在某些时候是不可避免的,除非密码只能交互使用。

在文件中有密码的情况下,您可以做的最好的事情是首先让访问它变得非常困难,然后限制如果有人找到它可以用它做什么。一条经验法则是,您不应该为存储在字符串中的密码提供比您必须在提示符下键入的密码更多的权限。

于 2009-02-17T01:53:37.687 回答
2

在 Windows 上,您可以/应该使用DPAPI,即提供存储加密的数据保护 API 。
它只是针对这种类型的问题。

存储的加密基于:

  • 用户帐户,因此只有登录用户才能访问数据。这使得数据可以使用完全相同的用户凭据传输到另一台 PC。
  • 机器,使数据只能在该特定机器设置上访问,而不能传输到另一台 PC。

有一个与 Karl Franklin 合作的 dnrTV 节目,准确地展示了实现此功能和其他加密功能所需的内容。
该节目的源代码也可在页面上找到。

当然,还有很多关于这个主题的其他文章。

于 2009-02-17T02:53:18.807 回答