0Pricing
Cryptology Academy · Урок

Шестнадцатеричное представление криптографических данных

Узнайте, почему криптографические хеши, ключи и шифротексты обычно отображаются в шестнадцатеричной записи

«Шестнадцатеричное представление криптографических данных» — бесплатный урок 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 — локальная установка не требуется.

Все уроки этого курса

  1. Кодирование Base64: как это работает
  2. ASCII, Unicode и представление текста
  3. Шестнадцатеричное представление криптографических данных
  4. Кодирование, шифрование и хеширование
← Назад к Cryptology Academy