Encryption 使用多个密码解密

Encryption 使用多个密码解密,encryption,hash,cryptography,passwords,Encryption,Hash,Cryptography,Passwords,我正在寻找一种特殊的方法来加密我的数据。 我想用我的密码加密它,然后用它解密。 稍后,我想让其他人使用他们的密码访问我数据的选定部分 除了每次我添加一个新的“读卡器”并使用所有密码的“混合”再次加密数据外,还有其他方法解密数据吗? 更重要的问题是如何在不知道每个人密码的情况下解密 然后我想到了另一个问题。如何验证给定/登录密码是否正确? 我认为在不保存实际密码或加密密码的情况下,以下操作可能会起作用: 获取密码;“这是一个非常糟糕的密码” 使用散列作为加密和解密密钥;散列(salt+“这是一个

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

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

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

  • 获取密码;“这是一个非常糟糕的密码”
  • 使用散列作为加密和解密密钥;散列(salt+“这是一个非常糟糕的密码”)
  • 保存哈希值作为密码验证;hash(hash(salt+“这是一个非常糟糕的密码”))
你觉得怎么样

谢谢大家的帮助

  • 使用安全密钥(如随机字节)对数据加密一次

  • 对于每个用户,使用用户密码(正确扩展)加密上述密钥,将其保存在userID下的文件或DB中,并使用salt/hash密码进行身份验证

  • 要访问用户的条目,请使用加盐/哈希密码验证提供的密码,然后使用用户密码解密数据密钥

  • 使用数据密钥解密数据并返回给用户

  • 附带优势:用户的密码可以更改,而无需更改加密数据的实际密钥

  • 第二部分:

    不要
    散列(散列(salt+“这是一个非常糟糕的密码”)
    ,在用户提供的加密密钥密码上使用密码扩展方法,如PBKDF2。这样的方法需要一个salt和一个密码,并反复多次使操作变慢,大约100ms似乎是一个很好的目标


    散列只能为操作增加少量时间。

    关于第二个问题:“实际密码”和“加密密码”之间的区别是什么?什么是“我的数据的选定部分”?在每个文件的基础上创建一个文件的一部分或数据库的一部分?这些都是好主意!谢谢!