Назад к вопросам
Senior
11
What is a hash function and what algorithms/protocols do you know?
Компании, где спрашивали
Kaspersky
Ответ от нейросети
sobes.tech AI
Хеш-функция — это функция, которая принимает на вход данные произвольного размера и возвращает фиксированного размера строку (хеш), которая однозначно (или почти однозначно) характеризует исходные данные.
Основные свойства хеш-функций:
- Детеминированность: одинаковый вход — одинаковый выход.
- Быстрота вычисления.
- Невозможность восстановить исходные данные по хешу (односторонность).
- Минимизация коллизий (разных входов с одинаковым хешем).
Известные алгоритмы и протоколы:
- MD5 — устаревший, не рекомендуется из-за уязвимостей.
- SHA-1 — также считается небезопасным для криптографических целей.
- SHA-2 (SHA-256, SHA-512) — широко используемые современные алгоритмы.
- SHA-3 — новейший стандарт, альтернативный SHA-2.
- HMAC — механизм построения MAC на основе хеш-функций для аутентификации сообщений.
- bcrypt, scrypt, Argon2 — хеш-функции, адаптированные для хеширования паролей с защитой от атак перебором.
Применение хеш-функций:
- Проверка целостности данных.
- Хранение паролей.
- Цифровые подписи.
- Структуры данных (хеш-таблицы).
Пример на Go для вычисления SHA-256:
import (
"crypto/sha256"
"fmt"
)
func main() {
data := []byte("example data")
hash := sha256.Sum256(data)
fmt.Printf("SHA-256: %x\n", hash)
}