🟡 Средний · 2 очк. Безопасность
Почему для хеширования паролей рекомендуют bcrypt, а не SHA256?
A SHA256 быстрее и удобнее в Go
B bcrypt настраиваемо медленный и устойчив к перебору; SHA256 слишком быстрый
C SHA256 устарел и не поддерживается
D bcrypt не требует соли
Объяснение вопроса

SHA256 - быстрая криптографическая хеш-функция. На современном железе можно вычислять миллиарды хешей в секунду, поэтому перебор паролей (в том числе по радужным таблицам) становится реальным.

bcrypt изначально спроектирован для паролей: встроенная соль, настраиваемая "стоимость" (cost factor), которая замедляет вычисление. Это сильно усложняет массовый перебор и атаки по словарю.

import "golang.org/x/crypto/bcrypt"

hashed, _ := bcrypt.GenerateFromPassword([]byte(password), bcrypt.DefaultCost)
err := bcrypt.CompareHashAndPassword(hashed, []byte(inputPassword))

В Go для паролей используют golang.org/x/crypto/bcrypt или аналоги (scrypt, Argon2). Обычный SHA256 без соли и без замедления для паролей применять не следует.

🧠Квиз 🏆Лидеры 🎯Собесед. 📖Вопросы 📚База зн.