Кодирование, хеширование и шифрование: в чём разница?
12.07.2026
Представьте: вы с друзьями решаете общаться так, чтобы никто посторонний не понял ни слова. Для этого нужен ключ — специальное правило, которое превращает обычный текст в набор символов, понятный только своим. По сути, вы придумываете алгоритм шифрования.
На самом деле, мы каждый день сталкиваемся с похожими задачами: вход в соцсети, оплата покупок, хранение паролей — везде информация преобразуется так, чтобы её не перехватили чужие. Есть три основных способа такого преобразования, и от того, какой вы выберете, зависит, останутся ли ваши секреты секретами.
Давайте вместе разбираться с тем, какой способ подходит для решения различных задач.
Хэширование
Начнём с хэширования — это преобразование входных данных в уникальную последовательность символов, из которой невозможно восстановить исходное сообщение. Самый распространённый пример использования — проверка и хранение паролей. Системы хранят не сами пароли, а их хэш-значения. Когда вы вводите пароль «password123», он проходит через математические вычисления и превращается в последовательность, например «454493194». При следующем входе система снова вычисляет хэш от твоего нового ввода и сравнивает результаты.
Хэш-алгоритмы являются «математическими тупиками», поскольку по пути преобразования уничтожается исходная информация. Но разгадать такой ребус всё-таки возможно: существует несколько уязвимостей.
Например, коллизия хэшей — это ситуация, когда разные пароли дают одинаковый хэш-результат. Такая уязвимость представляет серьёзную проблему безопасности. Для защиты от атак на хэшированные пароли используется «cоль» — случайные биты, добавляемые к паролю перед хэшированием. Это создаёт уникальные хэши даже для одинаковых паролей.
Приведём пример простейшего хэш-алгоритма.
Код ниже конкатенирует ASCII-коды символов пароля и считает сумму всех цифр.

Результат хэширования на разные виды паролей:

Со временем некоторые алгоритмы хэширования становятся уязвимыми. В 2012 году один вирус использовал «коллизионную атаку» для взлома паролей. Единственный надёждный способ защиты — использование «cоли».
Шифрование
Шифрование имеет другую цель — сделать исходное сообщение нечитаемым для любого, кто не владеет ключом. В отличие от хэширования, шифрование обратимо: зная ключ, можно восстановить исходное сообщение.
Приведём несколько примеров несложных шифров.
Шифр Цезаря: сдвигает буквы на фиксированное число позиций в алфавите.

XOR-шифр: шифрует данные побитовым XOR с ключом.

RC4: потоковый шифр, генерирующий псевдослучайный ключевой поток на основе секретного ключа.

Легендарные шифры, такие как шифр Цезаря, использовались для секретной переписки, но сегодня легко взламываются. Современные алгоритмы обеспечивают гораздо более высокий уровень безопасности.
Кодирование
Кодирование — это преобразование данных в определённую последовательность бит или символов для удобства дальнейшей работы. Например, передача текста по проводам требует преобразования букв в двоичный код. Важно помнить, что кодирование не предназначено для скрытия информации, а лишь для представления данных в удобном для контекста виде.
Рассмотрим пример преобразования каждого байта данных в два шестнадцатеричных символа.

Этот пример кодирует бинарные данные в ASCII-строку, используя алфавит из 64 символов. ASCII — стандарт кодирования букв латинского алфавита, цифр и специальных знаков, принятый в 1963 году.

Что же выбрать?
Главное различие между этими методами заключается в целях, которые перед вами поставлены.
Хеширование создаёт уникальные «отпечатки» данных, которые невозможно обратить. Шифрование обеспечивает конфидециальность информации при условии знания ключа. Кодирование просто преобразует данные в удобный для обработки форматки.
В программировани важно выбирать правильный метод для конкретной задачи:
→ для хранения паролей: хэширование с «солью»,
→ для защиты конфиденциальных данных: шифрование
→ для передачи информации данных по сетям: кодирование.
Теперь вы точно знаете, какой метод выбрать, что бы ваша беседа с друзьями оставалась максимально приватной и засекреченной!
Вебинары
Содержание

по математике
и программированию