Хеші/крипто
Bcrypt Hash + Verify
Хешування паролів через bcrypt (з випадковою сіллю та налаштовуваною вартістю) і перевірка пароля проти вже наявного bcrypt-хешу.
Bcrypt — це спеціально повільний алгоритм хешування паролів: на відміну від MD5 чи SHA-256, він навмисно вимагає багато обчислень, щоб перебір паролів методом брутфорсу залишався непрактичним навіть при витоку бази хешів.
Як користуватися
- Хешування: введіть пароль і вкажіть cost factor (вартість) — вищий цифра означає повільніше й безпечніше хешування.
- Кожен виклик хешування генерує нову випадкову сіль, тому однаковий пароль щоразу дає інший хеш — це нормально й очікувано.
- Перевірка: вставте пароль і вже наявний bcrypt-хеш, щоб перевірити, чи збігаються вони, без потреби повторно хешувати вручну.
Типові сценарії
- Ручна перевірка, що бекенд коректно хешує паролі перед збереженням у базу.
- Генерація тестового bcrypt-хешу для seed-даних чи фікстур у розробці.
- Діагностика, чому логін не проходить — порівняння введеного пароля з хешем у базі.
Що варто памʼятати
Cost factor варто підбирати так, щоб хешування займало приблизно 100–300 мс на цільовому сервері — це баланс між безпекою й навантаженням при логіні.
Bcrypt обрізає паролі довші за 72 байти — символи понад цю межу ігноруються алгоритмом.
Стаття про цей інструмент: Bcrypt: чому паролі хешують повільно, а не швидко
Часті запитання
Навіщо в bcrypt є фактор "cost" (складність)?
Фактор складності визначає, скільки разів хешування повторюється внутрішньо, тому зі зростанням значення хешування стає експоненційно повільнішим. Це дозволяє навмисно тримати його достатньо повільним, щоб протистояти перебору навіть у міру пришвидшення апаратного забезпечення.
Чому хеш bcrypt завжди однакової довжини незалежно від мого пароля?
Bcrypt видає хеш фіксованої довжини (зазвичай 60 символів), який кодує версію алгоритму, фактор складності, сіль і сам хеш разом — довжина не залежить від довжини вихідного пароля.
Чи потрібне окреме поле для солі в bcrypt?
Ні. Сіль генерується автоматично і вбудовується прямо в рядок результату, тому зберігати чи керувати нею окремо не потрібно — вона включена щоразу, коли ви перевіряєте пароль проти хешу.
Чи є обмеження на довжину пароля в bcrypt?
Так, bcrypt обробляє лише перші 72 байти пароля — усе, що довше, просто відкидається без попередження. На практиці це рідко проблема, але варто пам'ятати про це при роботі з дуже довгими паролями чи не-ASCII символами, де один символ може займати кілька байтів.
Чому bcrypt все ще рекомендують, якщо є Argon2?
Bcrypt десятиліттями перевірений на практиці, широко підтримується у всіх мовах і фреймворках і залишається цілком надійним вибором. Argon2 рекомендують як пріоритетний для нових систем через захист від атак на GPU/ASIC, але bcrypt не вважається небезпечним — лише менш стійким до спеціалізованого обладнання.