PBKDF2 — самый переносимый вариант вывода ключа: он есть в браузерах, OpenSSL, Java, .NET, Python, Node.js, API операционных систем и многих средах с требованиями к совместимости. Поэтому он удобен для совместимого хеширования паролей, миграций старых баз и систем, где нужны форматы PBKDF2_HMAC или pbkdf2_sha256.
Слабое место PBKDF2 в том, что он нагружает в основном CPU и почти не требует памяти. Атакующие с GPU и ASIC могут распараллеливать перебор PBKDF2 гораздо эффективнее, чем защитники на обычных application servers.
bcrypt лучше сопротивляется GPU-атакам, потому что использует небольшое внутреннее состояние в памяти. Argon2id — современный вариант по умолчанию для нового хранения паролей: он memory-hard и гибко настраивается. Выбирайте Argon2id, если контролируете стек; выбирайте PBKDF2, если важнее совместимость, поддержка Web Crypto, FIPS-ориентированная среда или требования существующего протокола.