我想在我的系统中使用 Argon2 作为密码的散列算法,我试图找到正确的参数来设置它。我正在使用 PHP。
在测试一些变体时,我试图了解使用 Argon2 对内存的影响。
文档提到了这一点:
memory_cost (integer) - Maximum memory (in kibibytes) that may be used to compute the Argon2 hash. Defaults to PASSWORD_ARGON2_DEFAULT_MEMORY_COST.
但是,使用 PHP 的函数memory_get_peak_usage
,我的脚本消耗的内存量似乎从未受到影响。这是一个例子:
$hash = password_hash('password1', PASSWORD_ARGON2I, ['memory_cost' => (1024*100), 'time_cost' => 20, 'threads' => 2]); // Should require 100MiB
$memory_peak = memory_get_peak_usage(true);
echo $memory_peak / (1024*1024); // To have the result in MiB
在我的系统上,这需要大约 0.5 秒才能执行,但内存使用量始终为 2MiB。
有人可以解释为什么 PHP 内存使用不受使用memory_cost
Argon2 参数的影响吗?