我打算使用Kohana的加密类,但是有更好更安全的双向处理方式吗?我希望我的用户能够发送他们之前密码的请求,而不是给他们重置密码。
您可以建议的任何算法或库?特别是在PHP?
答案 0 :(得分:7)
我不会进行双向加密。这基本上没有加密,因为您需要访问代码中的加密密钥,以便有效地破坏您的所有密码。
您应该使用单向函数,例如SHA1或MD5(SHA1更好)。当用户尝试登录时,加密他们使用的密码并将其与您存储的密码进行比较。
答案 1 :(得分:2)
双向加密不是可行的方法,因为持有服务器密钥的人基本上可以访问所有密码。这意味着如果您有一个心怀不满的员工或管理员,他们可以使用您的所有用户帐户数据。另外,您如何确保您需要的密钥?当您向用户提供密码时,如何保护站点与用户之间的通信。我的建议是不去那里。
答案 2 :(得分:0)
加密:
base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, md5($key), $string, MCRYPT_MODE_CBC, md5(md5($key))));
要解密:
rtrim(mcrypt_decrypt(MCRYPT_RIJNDAEL_256, md5($key), base64_decode($string), MCRYPT_MODE_CBC, md5(md5($key))), "\0");
不过,最好是用你的密码哈希(用盐!)并给你的用户一个重置链接,这样你就可以保证自己/你最终的错误。
答案 3 :(得分:0)
我会在每个人最喜欢的开发社区网站之后建模。
但是,严肃地说,在后端托管密码以便检索并显示给最终用户会出现一些安全问题:
我建议使用单向哈希(google用于最佳算法 - 几年前SHA-1表现不错,但人们总是在破解加密算法方面取得进展)。您只需将哈希应用于最终用户提供的密码,并将其与您存储的哈希密码进行比较 - 如果结果字符串匹配您的身份验证成功。
如果您想使用经过验证的公钥或对称密钥算法,至少要努力不要以纯文本形式通过网络发送密码。