Шестнадцатеричное представление криптографических данных
Узнайте, почему криптографические хеши, ключи и шифротексты обычно отображаются в шестнадцатеричной записи
«Шестнадцатеричное представление криптографических данных» — бесплатный урок Cryptology Academy на CoddyKit. Это урок 3 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Cryptology Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Cryptology Academy содержит 4 уроков всего.
Шестнадцатеричная система счисления
Шестнадцатеричная система — это система счисления с основанием 16, использующая цифры 0-9 и буквы A-F (или a-f). Каждая шестнадцатеричная цифра представляет ровно 4 бита (ниббл), поскольку 16 = 2^4.
Шестнадцатеричная запись — универсальный язык двоичных данных в вычислительной технике. Адреса памяти, значения байтов, цветовые коды и результаты криптографических операций обычно представляются в шестнадцатеричном виде.
4 бита на шестнадцатеричную цифру
Поскольку каждая шестнадцатеричная цифра представляет ровно 4 бита, каждому байту (8 битам) соответствуют ровно 2 шестнадцатеричные цифры. Поэтому преобразование между двоичной и шестнадцатеричной системами выполняется просто: разделите двоичное число на группы по 4 бита и преобразуйте каждую группу.
Например, байт 11001010 разделяется на 1100 (C) и 1010 (A), что дает шестнадцатеричное значение CA. Арифметика не нужна — достаточно преобразования по таблице соответствий.
Преобразование двоичного числа в шестнадцатеричное
Чтобы преобразовать двоичное число в шестнадцатеричное, сгруппируйте биты по четыре справа налево, а затем преобразуйте каждую группу: 0000=0, 0001=1, ..., 1001=9, 1010=A, 1011=B, 1100=C, 1101=D, 1110=E, 1111=F.
Пример: 11111111 превращается в 1111|1111 = FF = 255 в десятичной системе. 00000000 превращается в 00 = 0 в десятичной системе. 01001000 = 0100|1000 = 48 — это код ASCII для 'H'.
Почему шестнадцатеричная запись компактна для двоичных данных
Для полного ключа длиной 32 байта (256 бит) в двоичной записи потребовалось бы 256 единиц и нулей. В шестнадцатеричной записи достаточно всего 64 символов. В десятичной системе это было бы число длиной до 78 цифр.
Шестнадцатеричная запись обеспечивает правильный баланс: она достаточно компактна, чтобы люди могли ее читать и записывать, и при этом напрямую отражает базовую структуру двоичных данных без дополнительных затрат на преобразование.
Результат SHA-256 в шестнадцатеричном формате
SHA-256 создаёт хеш размером 256 бит (32 байта). При отображении в шестнадцатеричном формате это всегда ровно 64 шестнадцатеричных символа. Например, хеш SHA-256 для "hello" имеет вид 2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824.
Подсчёт: 64 шестнадцатеричных символа × 4 бита = 256 бит. Фиксированная длина — фундаментальное свойство хеш-функций независимо от размера входных данных.
Представление ключа в шестнадцатеричном формате
Криптографические ключи обычно хранятся и отображаются в виде шестнадцатеричных строк. Ключ AES-128 — это 16 байт = 32 шестнадцатеричных символа. Ключ AES-256 — это 32 байта = 64 шестнадцатеричных символа.
При настройке TLS или шифровании файлов часто требуется указывать ключи в виде шестнадцатеричных строк. Такие инструменты, как OpenSSL, библиотека cryptography для Python и большинство криптографических платформ, ожидают ключи в шестнадцатеричном формате и создают их в этом формате.
Обозначение IV и одноразового значения
Векторы инициализации (IV) и одноразовые значения также представляются в шестнадцатеричном формате. Стандартный IV для AES-CBC имеет размер 16 байт = 32 шестнадцатеричных символа. В AES-GCM обычно используется одноразовое значение размером 12 байт = 24 шестнадцатеричных символа.
Шестнадцатеричное обозначение упрощает визуальную проверку и сравнение IV, проверку того, что в двух сообщениях использовались разные одноразовые значения, а также ручную отладку криптографических протоколов во время разработки.
Формат шестнадцатеричного вывода OpenSSL
OpenSSL выводит хеши и ключи в определённом формате: строчные шестнадцатеричные символы с двоеточиями между каждой парой байтов. Например, хеш MD5 выглядит так: "b9:4d:27:b9:93:4d:3e:08:a5:2e:52:d7:da:7d:ab:fa:c4:84:ef:e8".
Формат с разделением двоеточиями делает каждый байт визуально отдельным и упрощает сравнение. Разные инструменты могут выводить шестнадцатеричные значения без двоеточий или с прописными буквами, но исходные байты остаются одинаковыми.
Шестнадцатеричный формат и Base64 для данных сертификатов
Сертификаты X.509 хранятся в формате DER (двоичном) или PEM (DER, закодированном в Base64). Шестнадцатеричный формат тоже подошёл бы, но Base64 на 33% компактнее шестнадцатеричного формата (каждый символ Base64 кодирует 6 бит, а шестнадцатеричный символ — 4 бита).
Для крупных объектов, таких как сертификаты и зашифрованные файлы, предпочтителен Base64. Для коротких значений, таких как хеши, ключи, IV и коды MAC, предпочтителен шестнадцатеричный формат, поскольку он напрямую показывает границы байтов.
Чтение шестнадцатеричных дампов
Шестнадцатеричный дамп показывает файл или область памяти одновременно в виде шестнадцатеричных байтов и символов ASCII, расположенных рядом. В левом столбце отображается шестнадцатеричное представление, а в правом — печатные символы ASCII (непечатные байты обозначаются точками).
Умение читать шестнадцатеричные дампы необходимо для криптографической отладки. Проверка того, что IV начинается с правильного смещения, что ключ имеет нужную длину или что префикс шифротекста соответствует ожиданиям, во всех этих случаях требует умения читать шестнадцатеричные дампы.
Шестнадцатеричное кодирование в заголовках безопасности
Заголовки безопасности HTTP и криптографические токены часто используют шестнадцатеричное кодирование. Токены CSRF, идентификаторы сеансов и ключи API часто представлены в виде шестнадцатеричных строк длиной 32–64 символа.
Случайный токен CSRF размером 128 бит (16 байт), закодированный в шестнадцатеричном формате, содержит 32 символа. Корректность легко проверить: подсчитайте символы, убедитесь, что используются только символы от 0 до 9 и от a до f, и проверьте отсутствие символов дополнения, которые указывали бы на Base64, а не на шестнадцатеричный формат.
Проверка знаний: преобразование в шестнадцатеричный формат
Проверьте, насколько хорошо Вы понимаете представление данных в шестнадцатеричном формате.
Главные выводы: шестнадцатеричный формат в криптографии
Шестнадцатеричный формат кодирует 4 бита на символ, поэтому 1 байт = 2 шестнадцатеричных цифры. SHA-256 создаёт 64 шестнадцатеричных символа (256 бит), ключи AES-128 содержат 32 шестнадцатеричных символа, а ключи AES-256 — 64 шестнадцатеричных символа.
Шестнадцатеричный формат является стандартным представлением для криптографических хешей, ключей, IV и одноразовых значений, поскольку напрямую отражает структуру байтов. OpenSSL и большинство криптографических инструментов выводят значения в шестнадцатеричном формате и принимают их в этом формате.
Часто задаваемые вопросы
Урок «Шестнадцатеричное представление криптографических данных» бесплатный?
Да — полный текст урока «Шестнадцатеричное представление криптографических данных» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Cryptology Academy, подпишись на CoddyKit PRO. Курс Cryptology Academy содержит 4 уроков всего.
Чему я научусь в уроке «Шестнадцатеричное представление криптографических данных»?
Узнайте, почему криптографические хеши, ключи и шифротексты обычно отображаются в шестнадцатеричной записи Ты практикуешь Cryptology Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Cryptology Academy?
Предыдущий опыт не требуется. Cryptology Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 4.
Сколько времени занимает урок «Шестнадцатеричное представление криптографических данных»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Cryptology Academy?
Да. Каждый урок Cryptology Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Кодирование Base64: как это работает
- ASCII, Unicode и представление текста
- Шестнадцатеричное представление криптографических данных
- Кодирование, шифрование и хеширование