У цій статті
Що таке bcrypt?
bcrypt — це адаптивна функція хешування паролів, розроблена у 1999 році. Заснована на шифрі Blowfish, bcrypt включає сіль для захисту від атак rainbow table та настроюваний фактор вартості, який контролює обчислювальну складність хешу.
На відміну від швидких хеш-функцій, таких як MD5 або SHA-256, bcrypt розроблена спеціально для зберігання паролів. Її адаптивна природа означає, що фактор вартості може збільшуватися з часом.
Як працює bcrypt
Хеш bcrypt містить усю інформацію для перевірки пароля в одному рядку.
- $2b$ — ідентифікатор алгоритму bcrypt версії 2b
- 10$ — фактор вартості (2^10 = 1024 раунди функції виведення ключа)
- 22 символи Base64-кодованої солі (128 біт випадковості)
- 31 символ Base64-кодованого виходу хешу
Спробуйте безкоштовно — реєстрація не потрібна
Згенерувати bcrypt хеш →Вибір правильного фактора вартості
Фактор вартості визначає кількість ітерацій, які bcrypt виконує внутрішньо. Кожне збільшення подвоює час обчислення.
Мета — зробити хешування достатньо повільним для стримування brute-force атак, але достатньо швидким для комфортного входу.
- Вартість 10 — хешування приблизно за 100мс; хороша база для більшості веб-додатків
- Вартість 12 — хешування приблизно за 300-400мс; рекомендовано для додатків з високим рівнем безпеки
- Вартість 14+ — хешування за 1 секунду або більше; зазвичай занадто повільно для інтерактивного входу
bcrypt проти інших алгоритмів хешування
Не всі алгоритми хешування підходять для зберігання паролів. Швидкі хеш-функції можуть обчислювати мільярди хешів на секунду на сучасних GPU.
- MD5/SHA-256 — розроблені для швидкості; ніколи не використовуйте для паролів
- bcrypt — навантаження на CPU, перевірена з 1999 року; рекомендація за замовчуванням
- Argon2 — переможець Password Hashing Competition 2015; стійкий до пам'яті; рекомендовано для нових проектів
Типові випадки використання
bcrypt використовується скрізь, де паролі потрібно зберігати безпечно.
- Реєстрація користувача — хешуйте пароль через bcrypt перед збереженням у базі даних
- Верифікація входу — хешуйте введений пароль та порівняйте зі збереженим хешем
- Міграція паролів — при оновленні з MD5/SHA на bcrypt перехешуйте паролі при наступному успішному вході
Часті запитання
Чи можу я змінити фактор вартості без скидання паролів?
Так. При кожному успішному вході перевіряйте фактор вартості збереженого хешу. Якщо він застарілий, перехешуйте пароль з новим фактором. Це називається опортуністичне перехешування.
Як перевірити пароль проти хешу bcrypt?
Рядок хешу bcrypt містить версію, фактор вартості та сіль. Функція перевірки видобуває їх, хешує кандидат-пароль з тими ж параметрами та порівнює результати за постійний час.
Чи варто використовувати bcrypt чи Argon2?
Обидва — відмінний вибір. bcrypt перевірений понад 25 років. Argon2 новіший та стійкий до пам'яті. Для нових проектів рекомендується Argon2id. bcrypt залишається абсолютно безпечним з фактором вартості 10 або вище.