paragonie / argon2-refiner
计算适合本地硬件环境的Argon2id参数。
v0.3.0
2021-04-19 03:00 UTC
Requires
- php: >=7.3
Requires (Dev)
- phpunit/phpunit: ^8|^9
- vimeo/psalm: ^3|^4
README
轻松有效地在您的机器上对Argon2id密码散列进行实时基准测试。
警告:这可能需要几秒钟到几分钟才能完成。
安装说明
使用Composer。
composer require paragonie/argon2-refiner
或者,您可以使用Git安装此软件。
git clone https://github.com/paragonie/argon2-refiner
cd argon2-refiner
composer install
使用说明
命令行
运行捆绑的benchmark
脚本,如下所示
# Installed via Composer:
vendor/bin/benchmark [milliseconds=500] [tolerance=250]
# Installed via Git:
composer run-benchmarks [milliseconds=500] [tolerance=250]
预期输出将类似于以下内容
$ vendor/bin/benchmark 125
Recommended Argon2id parameters:
Memory cost (sodium): 79691776
Memory cost (password_hash): 77824
Time cost: 3
Real time: 124ms
这意味着,如果您将您的Argon2id mem_cost设置为79691776
字节(或77824
KiB,这是password_hash()
所期望的)和time_cost
设置为3,您将获得最接近的参数,大约需要125毫秒来处理(在本例中,它花费了124毫秒)。
面向对象API
您可以通过调用适当的方法从对象中调整最小/最大成本,以在搜索范围内进行微调。
<?php use ParagonIE\Argon2Refiner\ParameterRecommender; $refiner = (new ParameterRecommender(125)) ->setMinMemory(1 << 20) ->setMaxMemory(1 << 31) ->setMinTime(2) ->setMaxTime(4) ->setTolerance(25); $results = $refiner->runBenchmarks();
runBenchmarks()
方法返回一个二维数组。每个子数组包含以下数据
mem_cost
(int) -- 候选参数time_cost
(int) -- 候选参数bench_time
(int) -- Argon2id计算中经过的毫秒数
从这个数据中,您可以制定自己的策略,以选择最适合您环境的参数集。