【问题标题】:VB.NET Encryption using a passwordVB.NET 使用密码加密
【发布时间】:2012-07-01 10:09:44
【问题描述】:

我有一个桌面应用程序,其中用户有一个加密的 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 在上面示例中使用的三重 DES 加密更安全。看到我们在 zip 文件上使用 AES,最好也使用 AES 作为 ZIP 文件密码。

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

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

用PBKDF2生成加密密钥?

【问题讨论】:

  • 回复:更新:您遇到了哪些问题? PBKDF 给你一个字节数组。

标签: vb.net encryption cryptography


【解决方案1】:

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

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

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

【讨论】:

  • 在 MS 的示例中,我看不到迭代计数用于解密的位置......这如何适应?
  • “如果您愿意,您可以使用密码的 (PBKDF) 哈希值,使用第三个(存储的)盐作为 IV。”这如何提供任何额外的安全性?
  • @John#1:正如myIterations 的评论所说,他们依赖默认值。
  • @John#2:它可以防止攻击者发现 IV。我不知道这是否真的使它更安全,但这很容易做到。
猜你喜欢
  • 1970-01-01
  • 2011-02-10
  • 1970-01-01
  • 1970-01-01
  • 2010-11-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-11
相关资源
最近更新 更多