paragonie/argon2-refiner

计算适合本地硬件环境的Argon2id参数。

v0.3.0 2021-04-19 03:00 UTC

This package is auto-updated.

Last update: 2024-09-19 10:53:24 UTC


README

Build Status Latest Stable Version Latest Unstable Version License Downloads

轻松有效地在您的机器上对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计算中经过的毫秒数

从这个数据中,您可以制定自己的策略,以选择最适合您环境的参数集。