我需要基于每个用户加密我的Web应用程序中的内容。
我是root用户,不想访问用户的内容,期限。
如何制作,以便用户是唯一可以访问其内容的用户?也许我可以这样做,因此他们的登录密码的哈希充当加密和解密密钥(然后他们的密码在我的数据库中存储单向散列,并且加密/解密散列是在登录时从他们的原始密码生成并存储在一个本地的cookie)?但如果他们更改密码怎么办?然后我必须更新所有可能需要大量处理能力的内容。
是否有一种加密方法可以提供此功能,而无需在密码更改时重新加密内容?或许类似于Linux上的ecryptfs?研究ecryptfs是一个很好的起点吗?
这样做只有用户可以访问我的服务器上的内容(甚至不是我),甚至可行吗?
答案 0 :(得分:11)
<强>过程:强>
密码更改时:
登录后:
备注:强>
答案 1 :(得分:-1)
您需要将密码用作密钥。
我不会嘲笑ecryptfs因为加密文件系统不是最佳解决方案。您不希望使用与其他用户相同的密钥加密一个用户的数据。
加密数据时,应生成一个随机字符串以用作salt。这可以防止有人使用预先生成的哈希列表来解密您的数据。它还会更改可能使用相同密码的两个人的哈希值。
当用户更改密码时,您必须重新加密数据并生成新的salt值。这是我期望作为客户的安全级别,因为我知道当我更改密码时,我会重新加密所有数据,以防止有人试图暴力破解我的密钥。
您可以在未加密的数据库中存储salt值。