【问题标题】:decrypt with more than one password使用多个密码解密
【发布时间】:2016-07-23 19:03:33
【问题描述】:

我正在寻找一种特定的方式来加密我的数据。 我想用我的密码加密它并用它解密。 稍后我想让其他人使用他们的密码访问我的数据的选定部分。

除了每次我添加一个新的“阅读器”并使用所有密码的“混合”再次加密数据之外,还有其他方法吗? 而最大的问题是如何在不知道每个人的密码的情况下解密?

然后我想到了另一个问题。如何验证给定/登录密码是否正确? 我认为以下可能会在不保存实际密码或加密密码的情况下起作用:

  • 获取密码; “这是一个非常糟糕的密码”
  • 使用哈希作为加解密密钥; hash(salt + "这是一个非常糟糕的密码")
  • 保存散列哈希作为密码验证; hash(hash(salt + "密码太差了"))

你怎么看?

感谢大家的帮助

【问题讨论】:

  • 关于第二个问题:“实际密码”和“加密密码”有什么区别?
  • “我的数据的选择部分”是什么意思?在每个文件的基础上到文件的一部分或数据库的一部分?

标签: encryption hash cryptography passwords


【解决方案1】:
  1. 使用随机字节等安全密钥对数据进行一次加密。

  2. 对于每个用户使用用户密码(适当扩展)加密上述密钥,将其保存在用户 ID 和加盐/哈希密码下的文件或数据库中以进行身份​​验证。

  3. 要访问查找用户的条目,请使用加盐/散列密码验证提供的密码,使用用户密码解密数据密钥。

  4. 用数据密钥解密数据并返回给用户。

  5. 附带优势:无需更改加密数据的实际密钥即可更改用户密码。

第二部分:

不要hash(hash(salt + "Thats an amazingly bad password")),对用户提供的加密密钥密码使用密码扩展方法,例如 PBKDF2。这样的方法需要一个盐和一个密码并迭代多次以使操作变慢,大约 100 毫秒似乎是一个不错的目标。

散列一个散列除了给操作增加一点时间之外没有任何作用。

【讨论】:

  • 这些想法很棒!非常感谢!
猜你喜欢
  • 2010-10-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多