Шестаднадцатери́чная кодиро́вка те́кста (далее - HEX-кодирование) - метод кодировки текста переводом каждого его символа (чаще всего представленные в системе ASCII или UTF-8) в шестнадцатеричную систему счисления.

Как это работает?

В качестве примера возьмём строку "Wikipedia 101". В данном случае ничего, кроме английских букв и цифр у нас нет. Поэтому можно предположить, что этот текст написан в системе ASCII. Согласно таблице данной системы символов, буква "W" будет иметь порядковый номер 5716, буква "i" - 6916 и так далее.

Таким образом, строка "Wikipedia 101" в шестнадцатеричной системе счисления будет выглядеть как:

57 69 6B 69 70 65 64 69 61 20 31 30 31

Применение

HEX-кодирование текста позволяет передавать бинарные данные в виде текстового(-ых) файла(-ов), что удобно при отправке/скачивании того или иного файла через протоколы HTTP и SMTP.

Также оно применяется в криптографии, для представления различных хэшей и/или ключей.

К удалению (технический раздел)

Примечание: всё то, что находится в рамках данного раздела, поставлено на возможное удаление из этой статьи.

В чем плюсы над Base64? Главный плюс данного метода над аналогами в том, что он не имеет как такого метода декодирования. Программно текст можно только закодировать. Если декодировать его в обратном порядке, то каждую получившуюся строку необходимо проверять на предмет логичности и совпадений. С получившимся HEX-числом можно выполнять математические операции, что позволяет дополнительно шифровать текст, используя смещение и прочие математические операции.

Какие есть минусы? Ограничение длинны фразы. Если фраза достаточно длинная, то её HEX-кодирование может быть затруднено. Для этого каждое следующее слово нужно разбивать на отдельные подфразы, которые будут отдельными HEX-числами. Каждое следующее выражение может иметь смещение порядкового номера токена/символа на определённое число позиций. Если превышено количество букв в алфавите, например, буква интерпретирована как 4610, то от неё нужно вычесть количество букв в алфавите. Если фраза имеет только английские буквы, мы получим следующее выражение: 46 - 26 = 22. Таким образом, номер буквы будет интерпретирован как 22. Это затруднит декодирование, в том случае, если нам не известно число смещения.

Категория:Компьютерные кодировки