Hash Identifier

Визначте тип хеша за довжиною та форматом — MD5, SHA-1, SHA-256 та інше

Рядок хеша

Працює локально · Безпечно вставляти секрети

Що таке ідентифікація хешу?

Ідентифікація хешу — це процес визначення того, який криптографічний алгоритм хешування створив певний дайджест. Криптографічні хеш-функції, зокрема MD5, SHA-1 та SHA-256, кожна виробляють виводи фіксованої довжини, і саме довжина виводу є основним сигналом для ідентифікації невідомого хешу. Коли ви стикаєтесь із шістнадцятковим рядком у дампі бази даних, конфігураційному файлі або відповіді API, інструмент ідентифікації хешів підказує, який алгоритм його, найімовірніше, згенерував.

Кожен алгоритм хешування відображає довільні вхідні дані у вивід фіксованого розміру, що називається дайджестом. MD5 завжди виробляє 128 бітів (32 hex-символи), SHA-1 — завжди 160 бітів (40 hex-символів), SHA-256 — завжди 256 бітів (64 hex-символи). Саме ця детермінована довжина виводу робить можливою алгоритмічну ідентифікацію без доступу до початкового введення або коду хешування.

Ідентифікація лише за довжиною не завжди є однозначною. Кілька алгоритмів можуть мати однаковий розмір виводу — наприклад, SHA-256 і SHA3-256 обидва виробляють 64-символьні hex-дайджести. У таких випадках інструмент ідентифікації хешів надає список алгоритмів-кандидатів, впорядкованих за поширеністю. Контекстні підказки, такі як вихідна система, формат кодування (hex чи Base64) і наявність префіксів алгоритму (наприклад, '$2b$' для bcrypt), дозволяють ще більше звузити варіанти.

Навіщо використовувати ідентифікатор хешів?

Невідомі хеші регулярно зустрічаються під час аудиту безпеки, міграції баз даних і форензного аналізу. Інструмент ідентифікації хешів усуває здогадки та за лічені секунди вказує на правильний алгоритм.

Миттєве визначення
Вставте хеш і одразу отримайте алгоритми-кандидати. Не потрібно вручну рахувати символи або звертатися до довідкових таблиць — інструмент автоматично зіставляє довжину hex зі всіма відповідними алгоритмами.
🔒
Аналіз із пріоритетом конфіденційності
Уся ідентифікація виконується повністю у вашому браузері за допомогою JavaScript. Значення хешу ніколи не покидає ваш пристрій, що важливо при аналізі хешів паролів, токенів автентифікації або чутливих форензних доказів.
📋
Повне охоплення алгоритмів
Визначає MD5, SHA-1, SHA-224, SHA-256, SHA-384, SHA-512 та їхні відповідники SHA-3. Довідкова таблиця охоплює повні родини SHA-2 і SHA-3, а також поширені альтернативи, зокрема RIPEMD-160 і BLAKE2.
🚫
Без облікового запису та встановлення
Працює миттєво в будь-якому сучасному браузері. Без реєстрації, API-ключа або CLI-інструмента для встановлення. Додайте до закладок і використовуйте щоразу, коли стикаєтесь із невідомим хешем — на будь-якій ОС, будь-якому пристрої.

Сфери застосування ідентифікатора хешів

Аудит безпеки
Під час тестів на проникнення визначення алгоритмів хешування паролів у скомпрометованих базах даних визначає підхід до злому. Хеші MD5 і SHA-1 свідчать про слабкий захист і можуть мати пріоритет для усунення.
Міграція баз даних
При міграції записів користувачів між системами необхідно знати алгоритм хешування збережених паролів, щоб правильно налаштувати новий рівень автентифікації. Неправильна ідентифікація алгоритму призведе до відмови всіх входів.
DevOps і CI/CD
Конвеєри збірки часто включають контрольні суми для перевірки артефактів. Визначення того, чи є контрольна сума SHA-256 чи SHA-512, гарантує використання правильної команди перевірки у скриптах розгортання.
Цифрова форензика
Форензні експерти стикаються з хеш-дайджестами в журналах цілісності файлів, записах блокчейну та метаданих доказів. Ідентифікація алгоритму є обов'язковою умовою для перевірки ланцюжка збереження доказів.
Інтеграція з API
Сторонні API іноді повертають значення хешів без документування алгоритму. Визначення типу хешу з відповіді дозволяє правильно налаштувати перевірку підпису webhook або валідацію контрольної суми.
Вивчення криптографії
Студенти, які вивчають курси з криптографії, можуть вставляти хеші, згенеровані різними алгоритмами, і одразу бачити зв'язок між вибором алгоритму, довжиною виводу та властивостями безпеки.

Довідник довжин хеш-алгоритмів

Таблиця нижче відображає кожен поширений хеш-алгоритм із його розміром виводу в бітах, hex-символах і байтах. Це основна довідкова таблиця, що використовується інструментами ідентифікації хешів. Коли кілька алгоритмів мають однакову довжину hex, для їх розрізнення необхідний додатковий контекст.

АлгоритмБітиHex-символиБайтиПримітки
MD51283216Broken — collisions trivial since 2004
SHA-11604020Deprecated — SHAttered attack (2017)
SHA-2242245628Truncated SHA-256; rarely used standalone
SHA-2562566432Current standard; TLS, Git, Bitcoin
SHA-3843849648Truncated SHA-512; CNSA Suite approved
SHA-51251212864Maximum SHA-2 output; large-data hashing
SHA3-2562566432Keccak-based; NIST alternative to SHA-2
SHA3-51251212864Keccak-based; highest SHA-3 strength
RIPEMD-1601604020Used in Bitcoin address derivation
BLAKE2s2566432Faster than SHA-256; 256-bit output

Розрізнення однакових довжин хешів

Деякі довжини hex відповідають кільком алгоритмам. Дві найпоширеніші неоднозначності — 64-символьні хеші (SHA-256 проти SHA3-256) і 40-символьні хеші (SHA-1 проти RIPEMD-160). Ось як їх розрізнити, коли довжини недостатньо.

64 hex-символи: SHA-256 проти SHA3-256
Обидва виробляють 256-бітні (64-символьні) дайджести. SHA-256 є значно поширенішим на практиці — коміти Git, TLS-сертифікати, блоки Bitcoin і більшість підписів API використовують SHA-256. SHA3-256 зазвичай зустрічається лише в системах, що явно вимагають відповідності NIST SP 800-185 або конструкцій на основі Keccak. Перевірте документацію вихідної системи для підтвердження.
40 hex-символів: SHA-1 проти RIPEMD-160
SHA-1 є значно поширенішим 160-бітним хешем — він історично використовувався в Git (до переходу на SHA-256), TLS і підписанні коду. RIPEMD-160 зустрічається переважно при генерації Bitcoin-адрес (HASH160 = SHA-256, за яким іде RIPEMD-160). Якщо хеш походить із контексту криптовалют, розгляньте RIPEMD-160; в іншому разі найімовірнішим кандидатом є SHA-1.

Приклади коду

Нижче наведено робочі реалізації ідентифікації хешів за довжиною hex чотирма мовами. Кожна функція перевіряє hex-кодування, шукає кількість символів і повертає всі відповідні алгоритми.

JavaScript
function identifyHash(hex) {
  const len = hex.length
  const isHex = /^[0-9a-fA-F]+$/.test(hex)
  if (!isHex) return ['Not a hex-encoded hash']

  const map = {
    32:  ['MD5'],
    40:  ['SHA-1', 'RIPEMD-160'],
    56:  ['SHA-224', 'SHA3-224'],
    64:  ['SHA-256', 'SHA3-256', 'BLAKE2s'],
    96:  ['SHA-384', 'SHA3-384'],
    128: ['SHA-512', 'SHA3-512', 'BLAKE2b'],
  }
  return map[len] || [`Unknown (${len} hex chars)`]
}

identifyHash('d41d8cd98f00b204e9800998ecf8427e')
// → ["MD5"]

identifyHash('e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855')
// → ["SHA-256", "SHA3-256", "BLAKE2s"]
Python
import re

HASH_LENGTHS = {
    32:  ['MD5'],
    40:  ['SHA-1', 'RIPEMD-160'],
    56:  ['SHA-224', 'SHA3-224'],
    64:  ['SHA-256', 'SHA3-256', 'BLAKE2s'],
    96:  ['SHA-384', 'SHA3-384'],
    128: ['SHA-512', 'SHA3-512', 'BLAKE2b'],
}

def identify_hash(hex_string: str) -> list[str]:
    hex_string = hex_string.strip()
    if not re.fullmatch(r'[0-9a-fA-F]+', hex_string):
        return ['Not a hex-encoded hash']
    return HASH_LENGTHS.get(len(hex_string), [f'Unknown ({len(hex_string)} hex chars)'])

identify_hash('da39a3ee5e6b4b0d3255bfef95601890afd80709')
# → ['SHA-1', 'RIPEMD-160']

identify_hash('a7ffc6f8bf1ed76651c14756a061d662f580ff4de43b49fa82d80a4b80f8434a')
# → ['SHA-256', 'SHA3-256', 'BLAKE2s']
Go
package main

import (
	"fmt"
	"regexp"
)

var hexPattern = regexp.MustCompile("^[0-9a-fA-F]+$")

var hashLengths = map[int][]string{
	32:  {"MD5"},
	40:  {"SHA-1", "RIPEMD-160"},
	56:  {"SHA-224", "SHA3-224"},
	64:  {"SHA-256", "SHA3-256", "BLAKE2s"},
	96:  {"SHA-384", "SHA3-384"},
	128: {"SHA-512", "SHA3-512", "BLAKE2b"},
}

func identifyHash(hex string) []string {
	if !hexPattern.MatchString(hex) {
		return []string{"Not a hex-encoded hash"}
	}
	if algos, ok := hashLengths[len(hex)]; ok {
		return algos
	}
	return []string{fmt.Sprintf("Unknown (%d hex chars)", len(hex))}
}

func main() {
	fmt.Println(identifyHash("d41d8cd98f00b204e9800998ecf8427e"))
	// → [MD5]
}
CLI (Bash)
#!/bin/bash
# Identify a hash from the command line by character count
hash="$1"

if [[ ! "$hash" =~ ^[0-9a-fA-F]+$ ]]; then
  echo "Not a hex-encoded hash"
  exit 1
fi

len=${#hash}
case $len in
  32)  echo "MD5 (128-bit)" ;;
  40)  echo "SHA-1 or RIPEMD-160 (160-bit)" ;;
  56)  echo "SHA-224 or SHA3-224 (224-bit)" ;;
  64)  echo "SHA-256 or SHA3-256 (256-bit)" ;;
  96)  echo "SHA-384 or SHA3-384 (384-bit)" ;;
  128) echo "SHA-512 or SHA3-512 (512-bit)" ;;
  *)   echo "Unknown hash length: $len chars" ;;
esac

# Usage: ./identify.sh d41d8cd98f00b204e9800998ecf8427e
# → MD5 (128-bit)

Часті запитання

Як працює ідентифікація хешів?
Ідентифікація хешів насамперед ґрунтується на довжині hex-кодованого дайджесту. Кожен алгоритм хешування виробляє фіксовану кількість бітів виводу: MD5 виводить 128 бітів (32 hex-символи), SHA-1 — 160 бітів (40 hex-символів), SHA-256 — 256 бітів (64 hex-символи) і так далі. Ідентифікатор вимірює довжину рядка, перевіряє, що він містить лише шістнадцяткові символи, і зіставляє її з відомими розмірами виводу алгоритмів.
Чи може ідентифікатор хешів однозначно визначити точний алгоритм?
Не завжди. Кілька алгоритмів можуть виробляти однакову довжину виводу. SHA-256 і SHA3-256 обидва виводять 64 hex-символи. SHA-1 і RIPEMD-160 обидва виводять 40 hex-символів. У таких випадках інструмент повертає всі кандидати. Щоб звузити вибір до одного алгоритму, потрібен контекст — вихідна система, документація або префікси алгоритму.
Що робити, якщо мій хеш закодований у Base64, а не hex?
Хеші, закодовані в Base64, використовують інший набір символів (A-Z, a-z, 0-9, +, /) і мають іншу довжину, ніж їхні hex-еквіваленти. 256-бітний хеш становить 44 символи Base64, але 64 hex-символи. Спочатку декодуйте рядок Base64 у сирі байти, потім перевірте довжину в байтах: 16 байт = MD5, 20 байт = SHA-1, 32 байти = SHA-256, 48 байт = SHA-384, 64 байти = SHA-512.
Чи безпечно вставляти хеші паролів в онлайн-ідентифікатор?
Цей інструмент працює повністю у вашому браузері — жодні дані не передаються на жодний сервер. Хеш ніколи не покидає ваш пристрій. Тим не менш, для максимальної операційної безпеки під час офіційного аудиту ви можете перевірити це, оглянувши вкладку мережі в інструментах розробника браузера або використовуючи інструмент офлайн після завантаження сторінки.
Чому MD5 досі використовується, якщо він криптографічно зламаний?
MD5 зламаний з погляду стійкості до колізій — зловмисник може створити два різних вхідних значення, що виробляють однаковий хеш. Однак MD5 досі використовується в незахищених контекстах: контрольні суми файлів для перевірки завантажень, ключі кешу, дедуплікація та ETags у HTTP. Для таких цілей випадкові колізії вкрай малоймовірні, а навмисні атаки не є проблемою. MD5 не слід використовувати для хешування паролів, цифрових підписів або перевірки сертифікатів.
Як визначити хеші bcrypt, scrypt або Argon2?
Функції хешування паролів, зокрема bcrypt, scrypt та Argon2, використовують характерні рядкові префікси замість сирого hex-виводу. Хеші bcrypt починаються з '$2a$', '$2b$' або '$2y$', за якими йде коефіцієнт вартості. Хеші Argon2 починаються з '$argon2id$' або '$argon2i$'. Хеші scrypt зазвичай починаються з '$scrypt$'. Це не сирі криптографічні дайджести, тому ідентифікація за довжиною не застосовується — сам префікс ідентифікує алгоритм.
У чому різниця між SHA-2 і SHA-3?
SHA-2 (що включає SHA-256, SHA-384 і SHA-512) базується на конструкції Merkle-Damgard, розробленій АНБ і стандартизованій у FIPS 180-4. SHA-3 (SHA3-256, SHA3-384, SHA3-512) базується на губчастій конструкції Keccak, відібраній через відкритий конкурс NIST і стандартизованій у FIPS 202. Вони виробляють однакові довжини виводу для відповідних рівнів безпеки, але використовують принципово різні внутрішні структури. SHA-3 розроблено як резервний варіант на випадок виявлення структурних слабкостей у SHA-2, хоча таких слабкостей досі не було продемонстровано.