Ответ
Хеш-функция — это алгоритм, который преобразует входные данные произвольного размера (строку, объект) в выходную битовую строку фиксированной длины (хеш).
Ключевые свойства:
- Детерминированность: Одинаковый вход всегда даёт одинаковый хеш.
- Эффективность: Вычисление хеша должно быть быстрым.
- Устойчивость к коллизиям: Крайне мала вероятность, что разные входные данные дадут одинаковый хеш.
- Необратимость (для криптографических): По хешу невозможно восстановить исходные данные.
Применение:
- Структуры данных: Быстрый поиск в хеш-таблицах (словарях).
- Целостность данных: Проверка неизменности файлов (контрольные суммы).
- Безопасность: Хеширование паролей (с солью).
Пример на Swift:
// Использование протокола Hashable для структур
struct User: Hashable {
let id: UUID
let name: String
}
let user1 = User(id: UUID(), name: "Alice")
let user2 = User(id: UUID(), name: "Bob")
print(user1.hashValue) // Уникальный хеш, основанный на id и name
// Криптографическое хеширование с помощью CryptoKit
import CryptoKit
let data = Data("SecretData".utf8)
let hash = SHA256.hash(data: data) // SHA256Digest
print(hash.description) // Например: SHA256 digest: 4a6838...
Тип, соответствующий протоколу Hashable, может быть ключом в Dictionary или элементом в Set.