【发布时间】:2011-02-03 02:28:04
【问题描述】:
我正在用 PHP 制作一个应用程序,并且要求必须可以解密密码,以避免将来将用户数据库切换到不同的系统时出现问题。考虑到无法修改这个未来系统的密码方法,我需要纯文本密码才能生成密码。
计划是使用存储在服务器上的公钥加密用户的密码。身份验证是通过加密输入和比较结果来完成的。没有完成解密。能够解密的私钥存储在异地以供以后使用。
您建议使用哪种加密/解密算法?当您认为攻击者无法使用私钥时,加密的密码是否仍与散列 (MD5/SHA1) 一样安全?
【问题讨论】:
-
MD5 和 SHA1 不是加密,而是散列。您在这里谈论的是加密还是散列?
-
@Matti Virkkunen 和 erenon:问题是“密码是否仍然像 MD5/SHA1 一样安全”......当存储了可解密的密码但私钥是存储在其他地方(网络服务器完全无法访问?)
-
@VolkerK 我不知道您为什么要使用非对称加密来存储密码。这违反了 CWE-257。
-
如果服务器可以访问密钥(它需要验证密码),那么其他任何人也可以获得访问权。
-
"如果您需要更改密码存储系统,那么您可以在用户下次登录时更新密码哈希。"
标签: php security passwords password-encryption