我正在为一个站点构建一个受密码保护的登录系统,并且我遇到了两个MySQL函数来加密用户的密码:MD5()和ENCODE()。
他们两个人似乎都加密了,但我想用哪个更安全。这里是否有明确的赢家,还是仅仅是一种偏好情况?谢谢!
发布于 2011-12-27 06:37:26
以下是对每个人所做工作的简要说明:
当涉及到使用散列(单向加密)时,用盐腌你的哈希是一个很好的实践。这样可以防止潜在攻击者使用已知哈希数据库快速发现密码。
简而言之,编码是完全不安全的,MD5是不安全的,而使用salt的SHA2(string,512)也是一个不错的选择。
发布于 2011-12-27 06:27:19
使用bcrypt。不要使用md5()或encode()。
发布于 2011-12-27 06:37:23
像MD5、SHA1这样的算法并不是加密,而是将任意长度的源文本哈希为固定长度的输出字符串。不要用它们来保护用户的密码。
让我告诉你一个好办法。问一个秘密的问题。这个秘密问题的答案将是我们密码加密算法的密钥。现在,您可以使用MD5或其他什么工具来散列这个答案。现在,使用此哈希作为秘密密钥加密密码(使用对称密钥算法,如AES)。这将在某种程度上有所帮助,这样如果用户忘记了他的密码,那么只有该用户,而不是其他人将能够恢复密码。
https://stackoverflow.com/questions/8641796
复制相似问题