我正在使用通过 Isopoh.Cryptography.Argon2 NuGet 包提供的 C# Argon2 实现(来自此处的最新版本 1.1.2:https ://github.com/mheyman/Isopoh.Cryptography.Argon2 )。生成和验证 Argon2 哈希有时很快,有时极慢(几秒钟),尽管我理解下面的配置是低成本的。
我的 Argon2 配置如下:
Type = Argon2Type.HybridAddressing,
Version = Argon2Version.Nineteen,
MemoryCost = 16, //I had this at 2048 and lowered to 16 for testing, still slow
TimeCost = 2,
Lanes = 2,
Threads = 1,
HashLength = 32,
ClearPassword = true,
ClearSecret = true
这导致 Argon2 散列显示以下配置标头:
$argon2id$v=19$m=16,t=2,p=2$<<hash>>
我编写了一个性能分析器,发现在大约 10 到 12 次迭代之后,每次迭代的实现(大部分)都会变慢,即使在重复测试中也是如此。速度慢约 2 个数量级或更多(从约 10 毫秒到几秒),这让我相信存在垃圾收集/内存泄漏问题。