【问题标题】:How to handle salt in password based encryption如何在基于密码的加密中处理盐
【发布时间】:2011-10-06 15:13:16
【问题描述】:

我正在学习正确的加密实现,我想作为一个练习,我会创建一个加密文本编辑器。

我的第一次尝试使用用户提供的密码的 SHA-512 哈希作为密钥,它运行得很好。虽然我将 IV 存储在文件的标题中,但没有受到保护,这让我很担心。

然后我在 stackoverflow 上读到我应该使用 SecretKeyFactory(我正在使用 Java)进行 PBE,现在我还需要提供盐。所以现在我也将盐存储在标题中,但这似乎会破坏拥有盐的整个目的。那么这应该如何工作呢?当我让 Alice 在保存文件时为她的文件选择密码时,我应该说“这里,记住这个随机数和你的密码。”?我希望生成的文件能够通过电子邮件发送给 Bob,因此盐不能存储在本地。

就我的应用而言,IV 和 salt 已公开。我希望我的用户在将文件发送给 Bob 时只需要知道密码,同时保持密码安全,但我找不到任何如何做到这一点的示例。

感谢您的帮助!

【问题讨论】:

    标签: encryption passwords


    【解决方案1】:

    将 IV 与数据一起存储是安全的,这就是 IV 的使用方式。你的方法没问题,选择一个分组密码,使用密码分组链接和 IV,然后你就走了。

    【讨论】:

      【解决方案2】:

      有很多方法可以从密码短语创建密钥和 iv,但其中一种更常见的方法是使用 SHA-1 的 HMAC,该算法将一些盐和其他因素考虑在内,以构建一个充分的位混合密钥和iv。

      技术标准是 PKCS#5 v2.0 PBKDF2 算法,OpenSSL 为该算法实现了一个 C 接口到一个可以做到这一点的方法,但据我所知,没有命令行方法。

      【讨论】:

        猜你喜欢
        • 2013-09-22
        • 1970-01-01
        • 1970-01-01
        • 2014-01-24
        • 1970-01-01
        • 2016-04-09
        • 1970-01-01
        • 2015-07-19
        • 1970-01-01
        相关资源
        最近更新 更多