Skip to main content
CheckTown
Інструменти

bcrypt: Як працює хешування паролів

Опубліковано 7 хв читання
У цій статті

Що таке 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 або вище.

Пов'язані інструменти