【问题标题】:php hashed password performancephp哈希密码性能
【发布时间】:2013-01-01 00:07:59
【问题描述】:

我构建了一个 php 哈希系统,但我对脚本的速度性能感到困惑。 我为不同数量的请求对脚本做了一个基准测试(速度仅针对脚本,不涉及其他内容)。

10 个请求:0.001 秒

100 个请求:0.011 秒

1000 个请求:0.073 秒

10000 个请求:0.667 秒

100000 个请求:6.776 秒

100万后服务器返回黑屏

我的困惑:

如果有 1000 个用户尝试同时登录,每个用户的密码输入需要 0.00001 秒进行哈希处理并与他们的原始密码进行核对,还是每个用户需要 0.073 秒?

benM 这是基准测试的脚本:

function test() 
{
  global $result;
  ob_start();
  $x = microtime(true);

  while($i < 10000) 
  {
      print // here you add whatever you want to test;
      ++$i;
  }

  $temp = microtime(true) - $x;
  ob_end_clean();
  return $temp;
}
echo number_format(test(), 3);

【问题讨论】:

  • 您如何对此进行基准测试?如果它是对服务器的单个请求,则无需担心。 0.00001 秒对于单个请求是正确的。每个登录本质上是一个单独的连接,因此是请求。服务器应该像处理单个请求一样管理它(很难解释,但希望这是有道理的)。
  • 今天的服务器是多线程的。今天的机器有多个内核。这配合得很好。你担心这些事情太快了。过早的优化是万恶之源。
  • 百万返回空白——是否触发了 PHP 超时?您可以在 php.ini/htaccess 或程序中设置超时值。
  • 关于“我已经建立了一个哈希系统”:您使用的是什么算法?此外,如果它用于密码散列,请注意快速不被认为对密码散列算法有好处。他们越快,他们破解的速度就越快。另外,如果这是用于密码,我可以谦虚地建议使用像this one 这样的体面的安全库,而不是自己滚动。
  • @alex_petrea - 很公平。 bcrypt 是最好的算法,所以如果你使用它,你就走在了正确的轨道上。 (这是我建议的图书馆使用的,以及你会发现的任何其他体面的图书馆)

标签: php hash passwords


【解决方案1】:

您使用的基准测试脚本并不理想,因为它在单个请求中测试它们。您不必担心这一点,因为 IRL,没有用户会在一个请求中登录 1000 次!

【讨论】:

  • 谢谢你的回答,我很困惑,因为我正在尝试建立一个散列金字塔,我刚刚开始,进度大约是 10%,我想在完成之前知道我是否我在正确的道路上
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-07
相关资源
最近更新 更多