• Онлайн: 2
Кодирование VS Шифрование: терминология
🔑 Ключевое различие: Код vs Шифр
В быту мы часто говорим «закодировать сообщение», подразумевая «зашифровать». Люди, незнакомые с этой областью, часто путают «код» и «шифр», хотя разница между ними принципиальна.
Разных шифров придумано множество. Но и коды вообще могут быть разные: двоичный код, штрих-код, QR-код, генетический код, исходный код, двоичный код, машинный код, байт-код, код Морзе, пин-код, кей-код, CVC-код, код от домофона, код ОКВЭД, и даже биологический и поведенческий код. Как во всём этом разобраться?
Кодирование — это обработка информации, заключающаяся в преобразовании её в некоторую форму, удобную в дальнейшем для хранения, передачи и последующей обработки.
Код — это система, алгоритм, правила создания неких условных обозначений (кодовых слов), используемых в дальнейшем для кодирования. Самый первый код, который мы встретили в своей жизни, была всем известная азбука. При помощи неё можно устную речь «кодировать» в виде букв и записывать на бумаге. То есть азбука – это код.
Кодовая таблица — это совокупность используемых кодовых слов и их значений. В начале любой азбуки обычно есть табличка, в которой нарисованы буквы и картинки. А - арбуз, Б - белочка, В - вишня и т.п. Это и есть кодовая таблица. В данном случае картинки, из которых берутся звуки – это кодовые слова, а буквы – значения.
Если говорить очень кратко: код нужен для удобства или сжатия (он открыт), а шифр — для секретности (он закрыт ключом). Попробую разобрать основные понятия простым языком.
Для начала про слово «код». В первую очередь код — это система условных обозначений или правило, по которому одним символам (или группам) ставятся в соответствие другие символы. Главная цель кодирования — приспособить информацию для передачи, хранения или обработки (например, сжать её или сделать удобной для компьютера). Пример: Азбука Морзе (точки и тире), ASCII (цифры для букв в компьютере) или QR-код. Здесь нет секрета: любой, кто знает правило (таблицу), может прочитать сообщение.
Иногда «кодом» называют не общее правило, по которому создаётся система кодирования, но и отдельные кусочки того, что получилось в результате кодирования. Поэтому можно встретить такие выражения: «код символа в коде Хаффмана». А ещё кодом может быть число из кодовой таблицы.
Когда я буду говорить «код» без уточнения, я буду иметь ввиду «общее правило», по которому строится схема кодирования (code / coding scheme). Кодовое слово (codeword) из кодовой таблицы или словаря (code table) я так и буду называть «кодовое слово». У каждого кодового слова есть своё значение (на которое и происходит замена кодируемого сообщения). А результат кодирования будет «кодированное сообщение». То есть чтобы получить закодировать неким кодом (алгоритмом) обычное сообщение, нужно взять (или составить самому) кодовую таблицу (словарь), содержащую кодовые слова со своими значениями и произвести пошаговую замену кодированное в соответствии с неким кодом, нужно используя некий код (правило) закодировать
Шифр — это тоже система преобразования, но её главная цель — скрыть смысл сообщения от посторонних. Отличительная черта шифра — наличие секретного ключа (пароля, числа), без которого прочитать текст невозможно, даже если ты знаешь сам алгоритм шифрования.
Пример: Шифр Цезаря (сдвиг букв), AES (современный стандарт шифрования). Если вы знаете, что буква «А» заменена на «Г», это ещё не значит, что вы сможете прочитать всё сообщение, не зная правила сдвига (ключа).
Кодовое слово — это конкретный «кубик» или «кирпичик», в который превращается часть исходной информации. Если проводить аналогию с языком: буква «А» — это исходный символ, а её код в азбуке Морзе «·−» — это кодовое слово.
Важное свойство: Хороший код должен быть однозначно декодируемым. Это значит, что при чтении потока кодовых слов не должно возникать путаницы, где заканчивается одно слово и начинается другое (для этого часто используют так называемые «префиксные коды»).
Словарь (в контексте кодирования) — это, по сути, таблица перевода или «шпаргалка». В ней хранится список соответствий: «такому-то исходному фрагменту соответствует такое-то кодовое слово».
В шифровании: Словарь (или «кодовая книга») может использоваться в старых «кодовых шифрах», где целые слова заменялись на числа из книги. В современном шифровании словари почти не используются, так как они слишком громоздкие и уязвимые.
В сжатии данных: Словарь — это основа алгоритмов вроде ZIP. Программа составляет словарь часто повторяющихся фрагментов (например, «пробел» или «http://») и заменяет их короткими кодовыми словами, чтобы файл стал меньше.
💡 Резюме для запоминания
- Код: «Переводчик» для удобства. Открыт, не скрывает смысл.
- Шифр: «Замок» для секретности. Закрыт на ключ.
- Кодовое слово: То, во что превращается кусочек сообщения.
- Словарь: Список правил, как именно превращать (для кода) или таблица для подстановки (для старых шифров).
