【问题标题】:PHP hash_pbkdf2 takes orders of magnitude longer on AWS instancesPHP hash_pbkdf2 在 AWS 实例上花费的时间要长几个数量级
【发布时间】:2016-01-12 14:06:24
【问题描述】:

我们想对 PHP 中的 hash_pbkdf2 函数进行基准测试,以选择合适的迭代次数供我们的应用程序使用。

当我在 m4.large AWS 实例上运行我的基准脚本时,运行时间比在我的笔记本电脑上多五个数量级。

此 Gist 显示了我正在使用的脚本,以及我从一个 m4.large 实例(负载下)、一个 t2.micro 实例(具有完整 CPU 积分且无负载)和三台不同速度的 Intel i7 笔记本电脑获得的结果。

https://gist.github.com/roberthl/301a3fb0a32baf057806

您可以看到,在 i7 笔记本电脑上,100,000 次迭代需要不到 200 毫秒,但在 AWS 实例上,单次迭代需要这么长时间。

我已经包含了 PHP 版本和一个 OpenSSL 基准,显示 sha256 在 AWS 实例和 i7 笔记本电脑上花费了相当的时间(以及 PHP 散列函数的基本基准也显示了这一点) - 建议它与 PBKDF2 操作特别相关。

发生这种情况的原因是什么,我该如何加快速度?

【问题讨论】:

  • 只是一个猜测:pbkdf2 函数使用纯 PHP - 同样用于哈希,哈希使用本机代码。他们可能不想升级它; pbkdf2 在服务器上会花费很多时间。

标签: php performance amazon-web-services cryptography pbkdf2


【解决方案1】:

请注意,AWS 实例使用 GIST 中所有内容的最旧 PHP 版本。那不可能很好。

如果可以的话,找一个最近的便携式 PHP 产品,然后安装它并进行基准测试。

此外,您可以对来自my Github repository 的各种 PBKDF2 实现进行基准测试,包括基于 PolarSSL、OpenSSL 和 Crypto++ 的版本,所有这些都具有相同的命令行和源代码界面。

【讨论】:

    猜你喜欢
    • 2020-11-28
    • 2019-05-30
    • 1970-01-01
    • 1970-01-01
    • 2016-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多