Ідентифікація хешу — це процес визначення того, який криптографічний алгоритм хешування створив певний дайджест. Криптографічні хеш-функції, зокрема 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-символи
Байти
Примітки
MD5
128
32
16
Broken — collisions trivial since 2004
SHA-1
160
40
20
Deprecated — SHAttered attack (2017)
SHA-224
224
56
28
Truncated SHA-256; rarely used standalone
SHA-256
256
64
32
Current standard; TLS, Git, Bitcoin
SHA-384
384
96
48
Truncated SHA-512; CNSA Suite approved
SHA-512
512
128
64
Maximum SHA-2 output; large-data hashing
SHA3-256
256
64
32
Keccak-based; NIST alternative to SHA-2
SHA3-512
512
128
64
Keccak-based; highest SHA-3 strength
RIPEMD-160
160
40
20
Used in Bitcoin address derivation
BLAKE2s
256
64
32
Faster 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-кодування, шукає кількість символів і повертає всі відповідні алгоритми.
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, хоча таких слабкостей досі не було продемонстровано.