phpmyadmin - md5()和密码()之间的区别

时间:2014-05-09 07:05:09

标签: mysql encryption phpmyadmin passwords md5

我想使用PHP和phpmyadmin数据库创建一个登录应用程序,并希望密码加密所以

  1. 是否有另外一种类型而不是md5()和password()来加密文本?

  2. md5()和密码()之间有什么区别?

  3. md5()和密码()有什么好处?

  4. 谢谢,希望可以对其他人有所帮助

    *编辑 我更喜欢这种哈希方法:)

4 个答案:

答案 0 :(得分:1)

不幸的是,仅使用SQL命令无法安全地存储密码。

为防止彩虹性攻击,您应该在散列方案中添加随机盐,但这意味着您无法仅使用SQL验证密码。您必须读取用户表中每行的salt并计算用于比较的哈希值。

可以调整安全散列函数以需要一定量的时间(例如10ms),例如BCrypt具有成本因子。如果必须检查每一行,并且每个计算都需要一些时间,那么如果用户表增长,则会遇到问题。

这就是为什么密码不应该由数据库本身进行散列,而是使用您的开发语言进行散列的原因。首先,您必须通过给定的用户名找到哈希及其盐,然后您可以验证此单行的密码。对于PHP,请查看函数password_hash()

答案 1 :(得分:0)

是的,还有其他类型。

我建议你使用BCRYPT。它允许您加密单向crypt中的密码。您将无法恢复密码,有一个功能可以让您知道给定的密码是否与加密密码相同。

干杯

答案 2 :(得分:0)

您可以在the official documentation找到所有答案。在提问之前,请始终先着手。

  1. 是的,请参阅链接文档中的列表,并附上详细说明。
  2. md5()使用MD5,密码()使用MySQL的本机哈希,如文档中所示。
  3. 取决于您的需求。这个问题太模糊了,但是文档给出了一个暗示:

      

    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()