MD5 与密码编码?
我正在为一个站点构建一个受密码保护的登录系统,并且遇到了两个 MySQL 函数来加密用户的密码:MD5() 和 ENCODE()。
它们似乎都对其进行了加密,但我想使用更安全的一个。这里是否有明显的赢家,或者这只是一种偏好情况?谢谢!
I'm building a password protected login system for a site, and I have run into two MySQL functions to encrypt the user's password: MD5() and ENCODE().
They both seem to encrypt it, but I want to use whichever one is more secure. Is there a clear winner here, or is it just a preference situation? Thanks!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
使用 bcrypt。不要使用
md5()
或encode()
。Use bcrypt. Don't use
md5()
orencode()
.以下是每个功能的简要说明:
当涉及到使用哈希值(单向加密)时,对你的哈希值进行加盐是一种很好的做法。哈希值。这可以防止潜在的攻击者使用已知哈希值的数据库来快速发现密码。
简而言之,encode 是完全不安全的,MD5 是不安全的,而带有 salt 的 SHA2(string, 512) 也是一个不错的选择。
Here is a brief explanation of what each one does:
When it comes to using hashes (one-way encryption), it is a good practice to salt your hashes. This prevents potential attackers from using a database of known hashes to rapidly discover passwords.
In short, encode is totally insecure, MD5 is insecure, and SHA2(string, 512) with salt is not a bad choice.
MD5、SHA1等算法不是加密,而是将任意长度的源文本散列成固定长度的输出字符串。并且不要使用它们来保护您的用户的密码。
告诉你一个好办法。问一个秘密问题。这个秘密问题的答案将是我们密码加密算法的秘密密钥。现在您使用 MD5 或其他任何方式来散列这个答案。现在使用此哈希作为密钥加密密码(使用对称密钥算法,例如 AES)。这在某种程度上会有所帮助,这样如果用户忘记了密码,那么只有该用户而没有其他人能够恢复密码。
Algorithms like MD5, SHA1 are not encrypting but hashing the source text of any length to a output string of fixed length. And donot use them to protect your user's password.
Let me tell you a good way. Ask for a secret question. Answer of this secret question will be the secret key of our password encryption algorithm. Now you use MD5 or whatever to hash this answer. Now encrypt the password using this hash as secret key (use symmetric key algorithms such as AES). This will help in a way, so that if the user forgets his password, then only that user and no one else will be able to recover the password.