Last updated on December 29th, 2022
Hashing algorithms are ordered best to worst. When in doubt "just use bcrypt". Only use PBKDF2 if you must use it. PBKDF2 is a bad algorithm because it is slow for the defender and fast for the attacker.
Minimum good password settings for authentication cause an attacker to get <10 kH/s/GPU. A "GPU" is a current high-end but not super high-end GPU due to diminishing returns in performance per cost. Basically a GPU with an MSRP of about $700 in 2015 USD (which is about $900 in 2022). Currently a "GPU" is one of the following: an RTX 4070 Ti, 2/3 speed of an RTX 4090, or an RX 7900 XTX.
Super high-end cards used to be 1.5x-2x the price and 25%-50% faster (ie diminishing returns) but the RTX 4090 is the best performance per cost GPU (about 16% higher than an RTX 4070 Ti). Since the RTX 4090 vs the RTX 4070 Ti is 4 vs 3 slots (1.33x and 2x vs older generations), 450 vs 285 watts (1.58x), and $1600 vs $900 (1.78x), I'm going to call the RTX 4090 "1.5 GPUs". Also you can easily put two RTX 4090s vs three RTX 4070 Ti in a case with a standard power supply. I debate on whether to ignore the RTX 4090 or call it 1 to 2 GPUs. I settled with calling it 1.5 GPUs.
If the RTX 4090 is considered as a single GPU then bcrypt in increases to cost 10 ("9.3" up from "8.7"). Argon2 increases to 49 MiB (t=1), 20 MiB (t=2), and 13 MiB (t=3). PPBKDF2 increases to cost 3 (SHA512), cost 7 (SHA256), and cost 15 (SHA1). PBKDF2 increases to 320,000 (SHA512); 890,000 (SHA256); and 2,000,000 (SHA1). And everything else stays the same.