Хеші/крипто

Bcrypt Hash + Verify

Хешування паролів через bcrypt (з випадковою сіллю та налаштовуваною вартістю) і перевірка пароля проти вже наявного bcrypt-хешу.


                    

Bcrypt — це спеціально повільний алгоритм хешування паролів: на відміну від MD5 чи SHA-256, він навмисно вимагає багато обчислень, щоб перебір паролів методом брутфорсу залишався непрактичним навіть при витоку бази хешів.

Як користуватися

Типові сценарії

Що варто памʼятати

Cost factor варто підбирати так, щоб хешування займало приблизно 100–300 мс на цільовому сервері — це баланс між безпекою й навантаженням при логіні.

Bcrypt обрізає паролі довші за 72 байти — символи понад цю межу ігноруються алгоритмом.

Стаття про цей інструмент: Bcrypt: чому паролі хешують повільно, а не швидко

Часті запитання

Навіщо в bcrypt є фактор "cost" (складність)?

Фактор складності визначає, скільки разів хешування повторюється внутрішньо, тому зі зростанням значення хешування стає експоненційно повільнішим. Це дозволяє навмисно тримати його достатньо повільним, щоб протистояти перебору навіть у міру пришвидшення апаратного забезпечення.

Чому хеш bcrypt завжди однакової довжини незалежно від мого пароля?

Bcrypt видає хеш фіксованої довжини (зазвичай 60 символів), який кодує версію алгоритму, фактор складності, сіль і сам хеш разом — довжина не залежить від довжини вихідного пароля.

Чи потрібне окреме поле для солі в bcrypt?

Ні. Сіль генерується автоматично і вбудовується прямо в рядок результату, тому зберігати чи керувати нею окремо не потрібно — вона включена щоразу, коли ви перевіряєте пароль проти хешу.

Чи є обмеження на довжину пароля в bcrypt?

Так, bcrypt обробляє лише перші 72 байти пароля — усе, що довше, просто відкидається без попередження. На практиці це рідко проблема, але варто пам'ятати про це при роботі з дуже довгими паролями чи не-ASCII символами, де один символ може займати кілька байтів.

Чому bcrypt все ще рекомендують, якщо є Argon2?

Bcrypt десятиліттями перевірений на практиці, широко підтримується у всіх мовах і фреймворках і залишається цілком надійним вибором. Argon2 рекомендують як пріоритетний для нових систем через захист від атак на GPU/ASIC, але bcrypt не вважається небезпечним — лише менш стійким до спеціалізованого обладнання.

Статті: Хеші/крипто

Hash Generator: чим MD5, SHA-1 і SHA-256 відрізняються одна від одної

Чому MD5 досі використовують для перевірки цілісності файлів, але не для паролів.

Checksum Verifier: як перевірити, що файл не пошкоджено

Чому збіг контрольної суми підтверджує цілісність файлу, але не те, хто його створив.

HMAC: чим хеш з ключем відрізняється від звичайного хешу

Чому звичайний SHA-256 не захищає від підробки повідомлення, а HMAC — захищає.

UUID: як генерують ідентифікатори, що майже ніколи не повторюються

Чому UUID v4 можна генерувати незалежно на мільйонах машин без ризику колізій.

Генератор паролів: що насправді робить пароль стійким

Чому довгий пароль зі словника надійніший за короткий з символами й цифрами.

AES: як працює симетричне шифрування

Чому той самий ключ шифрує і розшифровує дані в AES, і чим це відрізняється від асиметричного шифрування.

Argon2: чому цей алгоритм переміг конкурс на хешування паролів

Чим Argon2 краще захищає від атак на відеокартах, ніж старіші алгоритми хешування паролів.

Scrypt: навіщо алгоритму потрібно багато пам'яті

Чому scrypt навмисно вимагає багато пам'яті, щоб ускладнити перебір на ASIC-пристроях.

TOTP: як працюють одноразові коди в застосунках-автентифікаторах

Чому код у Google Authenticator працює без інтернету і синхронізується із сервером лише за часом.

PBKDF2: найстаріший стандарт розтягування ключів

Чому рекомендована кількість ітерацій PBKDF2 зростає з кожним роком.

X.509: що всередині SSL-сертифіката

Що саме браузер перевіряє в сертифікаті сайту, перш ніж показати зелений замочок.

PGP: як працює шифрування з відкритим і приватним ключем

Чому можна вільно ділитися публічним ключем PGP, але не приватним.