php中的密码重置和加密 - 解密关系

时间:2013-08-23 08:59:45

标签: php encryption passwords privacy

我不仅在signIn中使用密码,还在加密中使用密码。 并且signIn密码是加密的md5。 如果我丢失/忘记密码。如何解密我的数据?

例如,

。用户使用密码= 1234登录。 如果登录=>使用该密码解密数据。

我不想在userdata中保存我的密码以解决用户隐私问题。 我希望让用户相信他们的数据只能自己阅读。

如果用户更改密码,我该如何解密加密数据? 因为密码是加密 - 解密的密钥。

感谢。

2 个答案:

答案 0 :(得分:1)

如果您使用密码作为解密密钥,并且丢失了密码,则无法恢复数据。如果你使用这种方法,那么你需要非常小心,不要丢失密码。

在这种特殊情况下,您可以尝试强制使用MD5ed密码副本。 MD5 is very weak, and unsuitable for storing hashed passwords

答案 1 :(得分:0)

在您目前的方案中,显然不可能这样做。你可以解决它。您需要的是为您的方法添加其他图层。

首先,使用随机生成的密钥加密用户数据。该密钥是数据加密密钥。现在,您可以使用任何其他键或密钥加密此密钥。其中一个密钥将从用户密码生成(通过SSL发送,在服务器上使用PBKDF2从密码中导出密钥)。

现在,您可以考虑使用其他方案来解密数据加密密钥。一种方法是使用从标准密码恢复短语(宠物名称+母亲年龄)衍生的密钥。另一种方法是使用公钥加密密钥,并将私钥安全地存储在保险库中。加密数据密钥的安全性当然等于最不安全的密钥加密密钥。

加密数据需要采取相当大的步骤。用户永远无法确定您不对数据执行任何操作,因为您是提供(Web)应用程序的人。因此,认为用户不应该信任你是一个矛盾。考虑数据安全性(数据库安全性),防盗保护等可能更值得花费。

相关问题