Идентификатор шифрования

Вы извлекли данные из базы данных и обнаружили строки вида $2y$10$... или 5f4dcc3b5aa765d61d8327deb882cf99; перед началом расшифровки или обратного анализа необходимо понимать их содержание. Данный идентификатор использует критерии длины, кодирования символов, структуры и префиксов для определения наиболее вероятного алгоритма или способа кодирования, применяемого к данному образцу шифрованного текста.

Как идентифицировать шифрованный текст

  1. 1

    Вставьте образец

    Один хеш, блок шифротекста, токен или закодированная строка.

  2. 2

    Посмотрите совпавшие форматы

    В результате перечисляются все форматы, чей шаблон совпал с вашим образцом.

  3. 3

    Перекрёстная проверка

    Если подходит несколько форматов, подтвердите нужный с помощью программы для взлома хешей или декодера.

  4. 4

    Учитывайте неопределённость

    Идентификация по одному образцу редко бывает окончательной; если ничего не совпало, инструмент сообщит об этом.

Сигнатурные шаблоны, используемые идентификатором

По длине (для хешей в шестнадцатеричной кодировке):

Длина (шестнадцатеричных символов) Идентифицируется как
32 MD5
40 SHA-1
64 SHA-256
128 SHA-512

Другие длины, например SHA-224 (56 символов) или SHA-384 (96), не распознаются как хеши (строка из 56 или 96 шестнадцатеричных символов будет отнесена к Base64).

По префиксу (распознаются только префиксы bcrypt):

  • $2a$ $2b$ $2y$ bcrypt

Другие префиксы в стиле crypt ($1$, $5$, $6$, $argon2i$, $argon2id$, $pbkdf2$) не распознаются.

По кодировке:

  • Все символы входят в [A-Za-z0-9+/=] и длина кратна 4: вероятно, Base64.
  • Три сегмента, разделённых точкой ., каждый из символов [A-Za-z0-9_-]: JWT.

Обёртки PEM, блоки OpenSSH ssh-rsa/ssh-ed25519 и строки Base64url, содержащие - или _, не определяются.

Что идентификация не может определить

  • Точный алгоритм со 100%-й уверенностью. Строка из 64 шестнадцатеричных символов определяется как SHA-256, но это может быть также SHA3-256 или BLAKE2s; их невозможно различить по одному лишь шифротексту. Хеши NTLM (тоже 32 шестнадцатеричных символа) выглядят так же, как MD5.
  • Стойкость ключа. Хеш bcrypt показывает в префиксе фактор стоимости ($2y$10$ = стоимость 10), но не стойкость самого пароля.
  • Присутствие соли. Современные хеши паролей (bcrypt, Argon2) всегда солёные; старые (сырые MD5/SHA) могут быть как солёными, так и нет.
  • Открытый текст. Идентификация не обращает хеш; взлом это отдельный процесс, законный только для ваших собственных данных.

Когда идентификатор ошибается

  • Токены с пользовательским префиксом. Приложения иногда оборачивают хеш собственным префиксом; сначала снимите обёртку.
  • Двойное кодирование. Двоичный хеш, представленный в hex и затем обёрнутый в Base64, будет определён неверно. Попробуйте один раз декодировать и запустить снова.
  • Необычная длина. Усечённые хеши (например, первые 16 символов SHA-256, используемые как идентификатор) отображаются как «Base64», потому что правила для символов и длины пересекаются.
  • Обрамлённые или упакованные форматы. Блоки PEM, ключи OpenSSH и формат Django pbkdf2_sha256$... не распознаются; удалите обёртку или префикс и попробуйте снова, либо используйте специализированный анализатор.

Сценарии использования

  • Аудиты безопасности: инвентаризация типов хешей по всей кодовой базе перед миграцией криптографии.
  • Задачи CTF: быстрый первый проход по неизвестному фрагменту.
  • Реагирование на инциденты: определение формата утёкших учётных данных.
  • Отладка фреймворков: выяснение того, какую кодировку выдаёт библиотека.

Напоминание об этике

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

Часто задаваемые вопросы

Частично: MD5 это 32 шестнадцатеричных символа, а SHA-1: 40. Если длины попадают в один диапазон, различить их по одному лишь хешу нельзя; обычно вопрос решает контекст (имя столбца в базе данных, настройки фреймворка по умолчанию, утёкшая схема данных).

Нет. Инструмент только идентифицирует. Обращение хеша или расшифровка шифротекста требуют отдельных инструментов (а также ключа или вычислительных ресурсов для взлома) и законны только в отношении ваших собственных данных.

Argon2id (или bcrypt при высоком коэффициенте затрат) является текущей рекомендацией; методы PBKDF2-SHA256 и Scrypt также считаются приемлемыми. Простые варианты алгоритмов MD5, SHA-1 или необработанный SHA-256 не подходят для хранения паролей.

Нет. Введённое вами значение отправляется на наш сервер для проверки формата, но не сохраняется ни в какой базе данных и не добавляется в ссылку страницы.

Сопутствующие инструменты

Кодировщик и декодировщик Base58

Кодируйте текст UTF-8 или шестнадцатеричные байты и безопасно декодируйте Base58 с алфавитом Bitcoin, Ripple или Flickr.

Кодировщик файлов Base64

Кодируйте любой файл (PDF, ZIP, изображение, исполняемый файл) в текст Base64 для встраивания в JSON, письма, YAML или data URI. Работает локально в браузере, без загрузки на сервер.

Кодировщик шифра A1Z26

Кодируйте текст шифром A1Z26 (A=1, B=2, ... Z=26) или декодируйте числовую последовательность обратно в буквы, выбрав разделитель.

Генератор SSL-сертификатов

Создайте самоподписанный сертификат SSL/TLS и закрытый ключ RSA полностью в браузере. Свои Common Name, SAN и срок действия, экспорт в PEM.

Кодировщик и декодировщик Base85

Кодируйте и декодируйте Base85 в варианте Adobe Ascii85, который используется в файлах PostScript и PDF. Компактнее Base64 для двоичных данных.

Шифрование / расшифровка AES

Шифруйте и расшифровывайте текст низкого риска с AES-шифрами OpenSSL. Парольная фраза хэшируется SHA-256, а Base64-вывод содержит IV плюс шифротекст.

Инструмент доступен на других языках