Answer
- Updated
- 2026-10-21
- Basis
- The public record, labelled where it is a reading
- Related
- The register
Answers / Argon2i or PBKDF2: which should you use?
Argon2i or PBKDF2: which should you use?
When Argon2i is the better fit
Argon2i is designed to make each guess cost memory as well as time. Its addressing is data-independent, so an observer cannot learn from cache timing which memory the derivation touched. On a shared or virtualised host, that property is worth the trade. The cost is memory: a high setting on a busy server can become a denial-of-service lever, so the parameter choice needs an availability owner.
When PBKDF2 is the better fit
PBKDF2 is the function most estates already have, and it is available in modules that regulated buyers already accept. Its cost is an iteration count and a pseudorandom function, both easy to record and compare. The weakness is that the count ages with hardware, so the benchmark date matters as much as the number.
What the draft actually names
The public introduction names Argon2i and PBKDF2. It does not name Argon2id, scrypt or bcrypt. That does not make the others unlawful or insecure; it means a team using one has a decision to record and a reason to give. A product that quietly substitutes Argon2id for Argon2i is storing a weaker audit trail than it thinks.
How to decide in a week
Inventory the uses, benchmark both candidates on the weakest supported device, check the approved-module rules in each market you sell into, and write a one-page decision record. The kit carries the template. If the answer is still unclear, the honest output is a conditional decision with a review date, not a confident label.
The short answer, with its limit
Use the function your evidence can support. If you can benchmark and operate it, Argon2i gives more resistance per unit of hardware. If your market requires a validated module that offers PBKDF2, that constraint decides. Record the trade, the benchmark date and the review trigger.
Where the public record is silent, this page says so and does not fill the gap. The register carries the clause-level detail.