Что преобразует Hash-функция

«Что преобразует Hash-функция» — вопрос из категории Алгоритмы и структуры данных, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

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

  1. Детерминированность — одинаковые входные данные всегда дают одинаковый хеш.
  2. Быстрота — вычисление хеша происходит за константное время.
  3. Необратимость — по хешу нельзя восстановить исходные данные.
  4. Минимизация коллизий — разные входные данные должны давать разные хеши (хотя это не всегда возможно).

Пример в Kotlin:

val input = "Hello, world!"
val md5Hash = MessageDigest
    .getInstance("MD5")
    .digest(input.toByteArray())
    .joinToString("") { "%02x".format(it) }
// Результат: "6cd3556deb0da54bca060b4c39479839"