我们希望在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操作具体相关。
是什么导致这种情况发生,我该如何加快速度?
答案 0 :(得分:0)
请注意,AWS实例使用GIST中所有内容的最旧PHP版本。这不可能很棒。
如果可以的话,找一个最近年份的便携式PHP产品并安装和测试它。
此外,您可以对来自my Github repository的各种PBKDF2实现进行基准测试,包括PolarSSL,OpenSSL和基于Crypto ++的版本,所有这些实现都具有相同的命令行和源代码接口。