While Argon2 seems to be recommended for password hashing, based on this twit Argon2 is worse than bcrypt at runtimes < 1000 ms.
Based on this answer:
You should tweak the parameters to your own use-case and performance requirements, but I believe the following are acceptable defaults for Argon2id and Argon2d:
- 512MB of memory
- 8 iterations
- Parallelism factor of 8
The speed of this depends on your processor, but I achieved approximately 2000ms on my system.
Questions regarding proposed configuration:
- Does this mean that it will take 2 seconds time to hash or verify password hash?
- What if 10 users will want to login (hash validation) and webserver will have only 1GB memory, last user will wait for 10 seconds?
- Does this mean that during multiple users login webserver will eat configuration(500MB)*users_that_login_now the resources (CPU, Memory)?
- If all above is correct, how it can be usable for general web application with limited resources, should in only be used for banks and other applications that require best security?