3

我有一个桌面应用程序,其中用户有一个加密的 ZIP 文件库。配置文件包含解密这些 ZIP 的主密码。这个想法是用户输入他们在安装应用程序时选择的程序密码来打开程序,并且该密码用于解密存储在配置文件中的主密码。

所有这些安全性的要点是,即使有人可以访问硬盘和用户的 Windows 帐户,他们仍然无法在没有密码的情况下进入 ZIP 文件,理想情况下。

为了验证用户输入的程序密码,我从这里(页面底部)使用 C# 哈希代码(转换为 VB):

http://crackstation.net/hashing-security.htm

到目前为止,一切都很好。我们只存储了程序密码的哈希值,因此黑客无法通过查看配置文件来读取它。

现在,我正在尝试实现此处的加密:

http://msdn.microsoft.com/en-us/library/yx129kfs.aspx

实际问题:

那么以下哪一项以纯文本形式存储在配置文件中,用于在运行时使用用户输入的程序密码解密 ZIP 主密码?

  • 用于生成加密密钥的盐(这可以与上面用于散列密码的盐相同吗?)

  • 初始化向量(IV)?

  • 加密密钥?(可能不是......)(MS示例中的k1)

  • 解密密钥?(在 MS 的例子中 k2)

在MS的例子中,他们把加密和解密都混在一起了……我有很多片段,但我不知道如何把它们放在一起……

更新

我读过 AES 加密比 MS 在上面示例中使用的 Triple DES 加密更安全。看到我们在 zip 文件上使用 AES,最好使用 AES 作为 ZIP 文件密码。

那么,我如何结合这个 AES 示例:

http://msdn.microsoft.com/en-us/library/system.security.cryptography.aescryptoserviceprovider.aspx#Y2300

用 PBKDF2 生成加密密钥?

4

1 回答 1

1

您需要存储 PBKDF 函数的盐和迭代计数(不能与用于散列密码的盐相同)。

关键是 PBKDF 的结果,对于给定的盐和迭代计数,它是固定的。

您还需要存储 IV。
如果您愿意,您可以使用密码的(PBKDF)散列,使用第三个(存储的)盐作为 IV。

于 2012-06-29T21:33:56.743 回答