我不仅在登录中使用密码,还在加密中使用密码。并且登录密码是加密的 md5。如果我丢失/忘记密码。如何解密我的数据?
例如。用户使用密码登录 = 1234。如果登录 => 使用该密码解密数据。
由于用户隐私问题,我不想将密码保存在用户数据中。我想让用户相信他们的数据只能自己读取。
如果用户更改密码,我如何解密加密数据?因为密码是加密解密的关键。
谢谢。
我不仅在登录中使用密码,还在加密中使用密码。并且登录密码是加密的 md5。如果我丢失/忘记密码。如何解密我的数据?
例如。用户使用密码登录 = 1234。如果登录 => 使用该密码解密数据。
由于用户隐私问题,我不想将密码保存在用户数据中。我想让用户相信他们的数据只能自己读取。
如果用户更改密码,我如何解密加密数据?因为密码是加密解密的关键。
谢谢。
如果您将密码用作解密密钥,并且您丢失了密码,则无法恢复数据。如果您使用这种方法,那么您需要非常小心不要丢失密码。
在这种特殊情况下,您可以尝试暴力破解密码的 MD5ed 副本。MD5 很弱,不适合存储散列密码。
在您当前的方案中,显然不可能做到这一点。不过,您也许可以解决它。您需要为您的方法添加额外的层。
首先,使用随机生成的密钥对用户数据进行加密。该密钥将是数据加密密钥。现在您可以使用任何其他密钥或密钥加密此密钥。这些密钥之一将从用户密码生成(通过 SSL 发送,在服务器上使用 PBKDF2 从密码中派生密钥)。
现在您可以考虑替代方案来解密数据加密密钥。一种是使用从标准密码恢复短语(宠物名称+母亲年龄)派生的密钥。另一种方法是使用公钥加密密钥并将私钥安全地存储在保险库中。加密数据密钥的安全性当然等于最不安全的密钥加密密钥。
加密数据迈出了相当大的一步。用户永远无法确定您没有对数据做任何事情,因为您是提供(网络)应用程序的人。因此,认为用户不应该信任您本身就是一个矛盾。考虑数据免受攻击(数据库安全)、盗窃保护等的安全性可能更值得付出代价。