From: PHP RFC Argon2password_hash https://wiki.php.net/rfc/argon2_password_hash
成本因素
From:
由于 PHP 运行的平台多种多样,成本因素被故意设置得很低,以免在使用默认成本参数时意外耗尽共享或低资源系统上的系统资源。因此,用户应该调整成本因素以匹配他们正在使用的系统。以下列表概述了使用这些默认成本值的各种系统上的哈希性能。
Common Cloud Server 512 MB, 1 Core: 3-5 ms
Common Cloud Server 2 GB, 2 Core, 1-3 ms
512 MB Raspberry Pi Zero: 75-85ms
由于 Argon2 没有任何“坏”值,但是消耗更多的资源被认为比消耗更少的资源更好。鼓励用户调整他们正在开发的平台的成本因素。
Threads
From: Argon2 的建议迭代次数是多少 https://crypto.stackexchange.com/questions/37137/what-is-the-recommended-number-of-iterations-for-argon2
The 氩气纸 https://password-hashing.net/argon2-specs.pdf给出以下过程(解释)来确定应使用的参数:
- 计算出您可以使用多少个线程,相应地选择 $h$。
- 计算出您可以使用多少内存,相应地选择 $m$。
- 确定您可以花费的最大时间 $x$,选择最大的 $t$,以便您的系统和其他参数选择花费的时间少于 $x$。
IE。他们建议您在系统上运行它,并确定与您的内存和处理器时间使用限制相匹配的最大参数。
来自 Argon 2 规格。
(链接在这里 https://password-hashing.net/argon2-specs.pdf)
并行度p
确定可以运行多少个独立(但同步)的计算链。它可以采用 1 到 2^24 -1 之间的任何整数值
内存大小m
可以是任意整数千字节8p
到 2^32
−1。实际块数为m′
,即m
向下舍入到最接近的倍数4p
.
迭代次数t
(用于独立于内存大小调整运行时间)可以是 1 到 2^32 -1 之间的任何整数
更多文献
从这里 http://argon2-cffi.readthedocs.io/en/stable/parameters.html
计算出每次调用 Argon2 时可以使用多少个线程(并行性)。他们建议使用两倍于专用于散列密码的核心数量。
计算出每次通话需要多长时间。对于并发用户登录的一项建议是将其保持在 0.5 毫秒以下。
使用您选择的参数测量散列时间。查找在您的计算时间内的 time_cost。如果 time_cost=1 花费的时间太长,请降低 memory_cost。
结论:
因此,从上面的摘录看来,您的目标是时间跨度0.5ms
由 PHP 测量microtime
就像 BCrypt 的例子一样。
然后就可以设置数量了threads是 CPU 运行的核心数量的两倍,因此 4 核处理器为 8。
然后,您应该能够使用上述两个值运行一系列测试,以找到有效的第三个值内存消耗.
在您的服务器上运行一些测试,看看服务器可以轻松管理什么。
探索如果这个 CLI http://argon2-cffi.readthedocs.io/en/stable/cli.html可以帮助。
按照上面引用中列出的顺序更改三个变量(在Threads),因此调整内存而不是使用大迭代计数。
简而言之,我们无法为您提供“最佳建议”指南,因为这取决于具体规格。你打算在...上运行它