我想使用PHP和phpmyadmin数据库创建一个登录应用程序,并希望密码加密所以
是否有另外一种类型而不是md5()和password()来加密文本?
md5()和密码()之间有什么区别?
md5()和密码()有什么好处?
谢谢,希望可以对其他人有所帮助
*编辑 我更喜欢这种哈希方法:)
答案 0 :(得分:1)
不幸的是,仅使用SQL命令无法安全地存储密码。
为防止彩虹性攻击,您应该在散列方案中添加随机盐,但这意味着您无法仅使用SQL验证密码。您必须读取用户表中每行的salt并计算用于比较的哈希值。
可以调整安全散列函数以需要一定量的时间(例如10ms),例如BCrypt具有成本因子。如果必须检查每一行,并且每个计算都需要一些时间,那么如果用户表增长,则会遇到问题。
这就是为什么密码不应该由数据库本身进行散列,而是使用您的开发语言进行散列的原因。首先,您必须通过给定的用户名找到哈希及其盐,然后您可以验证此单行的密码。对于PHP,请查看函数password_hash()。
答案 1 :(得分:0)
是的,还有其他类型。
我建议你使用BCRYPT。它允许您加密单向crypt中的密码。您将无法恢复密码,有一个功能可以让您知道给定的密码是否与加密密码相同。
干杯
答案 2 :(得分:0)
您可以在the official documentation找到所有答案。在提问之前,请始终先着手。
取决于您的需求。这个问题太模糊了,但是文档给出了一个暗示:
PASSWORD()函数由MySQL中的身份验证系统使用 服务器;你不应该在自己的应用程序中使用它。为了那个原因 目的,改为考虑MD5()或SHA2()。
答案 3 :(得分:0)
PASSWORD()函数由MySQL服务器中的身份验证系统使用;你不应该在自己的应用程序中使用它。为此,请考虑使用MD5()或SHA2()。有关在应用程序中安全地处理密码和身份验证的详细信息,另请参阅RFC 2195第2节(质询 - 响应身份验证机制(CRAM))。
http://www.sitepoint.com/forums/showthread.php?761789-MYSQL-s-password()-function-or-md5()