Шестаднадцатери́чная кодиро́вка те́кста (далее - 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. Это затруднит декодирование, в том случае, если нам не известно число смещения.
Категория:Компьютерные кодировки