Что такое хеш-значение?

«Что такое хеш-значение?» — вопрос из категории Алгоритмы и структуры данных, который задают на 10% собеседований IOS Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

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

Ключевые свойства:

  1. Детерминированность: Для одинаковых входных данных хеш всегда одинаков.
  2. Быстрота: Вычисление происходит за константное время (в идеале).
  3. Лавинный эффект: Малейшее изменение входных данных кардинально меняет хеш.
  4. Минимизация коллизий: Разные входные данные должны давать разные хеши (насколько это возможно).

Применение в Swift (протокол Hashable):

struct User: Hashable {
    let id: Int
    let email: String
}

let user1 = User(id: 1, email: "alex@example.com")
let user2 = User(id: 1, email: "alex@example.com")

print(user1.hashValue == user2.hashValue) // true

// Хеш-значение используется для быстрого поиска и сравнения в коллекциях:
let userSet: Set<User> = [user1, user2] // В множестве будет только один элемент
let scores: [User: Int] = [user1: 100] // User выступает в качестве ключа в словаре

Важно: Хеш-значение не гарантирует уникальности (возможны коллизии) и не предназначено для шифрования. Для криптографии используйте специализированные функции (SHA-256 через CryptoKit).