MD5 Hash Generator

Генерує хеш MD5 з будь-якого тексту

Вхідний текст

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

Хеш MD5

Хеш MD5 з'явиться тут…

Що таке хешування MD5?

MD5 (Message-Digest Algorithm 5) — це криптографічна хеш-функція, яка генерує фіксований 128-бітний (16-байтний) дайджест з будь-якого вхідного значення, незалежно від його розміру. Опублікований у 1992 році Рональдом Рівестом у вигляді RFC 1321, MD5 розроблявся як швидший наступник MD4 і швидко став однією з найпоширеніших хеш-функцій в Інтернеті. Алгоритм обробляє вхідні дані блоками по 512 біт через чотири раунди по 16 операцій, використовуючи різну нелінійну функцію в кожному раунді, щоб отримати 32-символьний шістнадцятковий відбиток.

Хеш-функція є однобічним перетворенням: за вхідними даними можна миттєво обчислити хеш, але, маючи лише хеш, відновити вихідні дані неможливо. Навіть зміна одного біта у вхідних даних призводить до повністю іншого дайджесту — це властивість називається лавинним ефектом. MD5 відображає нескінченний простір вхідних даних на фіксований 128-бітний вихідний простір, тому колізії (два різних вхідних значення, що дають однаковий хеш) математично гарантовано існують, проте безпечна хеш-функція має робити їх пошук обчислювально неможливим.

Починаючи з 2004 року дослідники продемонстрували практичні атаки на колізії проти MD5, тобто він більше не вважається безпечним для цифрових підписів, сертифікатів та будь-якого контексту, де потрібна стійкість до колізій. Однак MD5 залишається широко використовуваним для завдань, не пов'язаних із безпекою: перевірка цілісності файлів після завантаження, генерація ключів кешу, дедублікація вмісту та створення детерміністичних ідентифікаторів із рядків. Для таких застосувань швидкодія алгоритму та повсюдна підтримка в бібліотеках роблять його практичним вибором. У 2008 році Марк Стівенс та його колеги опублікували атаку на колізію з довільним префіксом, тобто зловмисник може створити два документи з будь-якими обраними префіксами, що матимуть однаковий дайджест. Ця техніка була продемонстрована на Chaos Communication Congress 2008 шляхом створення шахрайського сертифіката Центру сертифікації. Шкідливе ПЗ Flame у 2012 році використало колізії з довільним префіксом, щоб підробити сертифікат підпису коду Microsoft, дозволивши шкідливому ПЗ видавати себе за легітимний пакет оновлень Windows. Ці реальні експлойти підтвердили, що алгоритм криптографічно зламаний для будь-якого застосування, що покладається на довіру, і не повинен використовуватися там, де зловмисник може впливати на дані, що хешуються.

Навіщо використовувати цей генератор MD5?

Генеруйте хеші MD5 миттєво, не встановлюючи нічого і не пишучи коду. Вставте текст і отримайте 32-символьний шістнадцятковий дайджест у реальному часі.

Миттєве хешування
Результат оновлюється в міру введення. Без натискання кнопок, без очікування — дайджест MD5 з'являється символ за символом по мірі зміни вхідних даних.
🔒
Обробка з пріоритетом приватності
Усе хешування виконується локально у вашому браузері за допомогою JavaScript. Ваш вхідний текст ніколи не покидає ваш пристрій і ніколи не надсилається на жоден сервер.
📋
Копіювання в один клік
Скопіюйте хеш у буфер обміну одним кліком. Перемикайтеся між нижнім та верхнім регістром шістнадцяткового виводу відповідно до очікуваного формату вашої системи.
🔍
Без реєстрації
Без реєстрації, без входу в систему, без обмежень використання. Відкрийте сторінку і починайте хешування негайно. Працює на будь-якому пристрої з сучасним браузером.

Сфери застосування MD5

Фронтенд-розробка
Генеруйте хеші для запобігання кешуванню статичних ресурсів. Додавайте MD5-дайджест вмісту файлу до URL-адрес CSS та JavaScript, щоб браузери отримували оновлену версію при зміні вмісту.
Бекенд-розробка
Створюйте детерміністичні ключі кешу із складних параметрів запиту або тіл запитів. Хеші MD5 генерують компактні ключі фіксованої довжини, що добре працюють із Redis, Memcached та шарами кешу CDN.
DevOps та CI/CD
Перевіряйте цілісність файлів після передачі, порівнюючи контрольні суми MD5. Багато реєстрів пакетів та репозиторіїв артефактів публікують MD5-дайджести разом із завантаженнями для швидкої перевірки.
QA та тестування
Порівнюйте MD5-хеші відповідей API, дампів бази даних або конфігураційних файлів для виявлення неочікуваних змін між тестовими запусками без перегляду повного вмісту.
Інженерія даних
Дедублікуйте записи в ETL-конвеєрах, обчислюючи MD5-хеші вмісту рядків. Два рядки з однаковим хешем є кандидатами на дедублікацію, що знижує витрати на зберігання та обробку.
Навчання та освіта
Експериментуйте з хеш-функціями, щоб зрозуміти однобічні перетворення, лавинний ефект і чому стійкість до колізій важлива для безпеки. MD5 — найпростіший широковідомий хеш для вивчення.

MD5 проти інших алгоритмів хешування

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

АлгоритмРозмір дайджестуДовжина hexСтандартНайкраще для
MD5128 bits32 hex chars1992 / RFC 1321Checksums, non-security fingerprints
SHA-1160 bits40 hex chars1995 / RFC 3174Legacy git commits (being replaced)
SHA-256256 bits64 hex chars2001 / FIPS 180-4TLS certificates, blockchain, JWTs
SHA-384384 bits96 hex chars2001 / FIPS 180-4Government systems, higher security margin
SHA-512512 bits128 hex chars2001 / FIPS 180-4Digital signatures, HMAC with large keys
SHA-3256 bits64 hex chars2015 / FIPS 202Post-quantum readiness, backup standard
BLAKE3256 bits64 hex chars2020High-performance checksums, Merkle trees

Як працює MD5

MD5 обробляє вхідні дані через конструкцію Merkle-Damgard: повідомлення доповнюється до кратного 512 бітам, розбивається на блоки, і кожен блок проходить через чотири раунди по 16 побітових операцій, що змішують вхідні дані з попередньо обчисленими константами, похідними від синуса. Результатом є 128-бітний стан, який стає фінальним дайджестом.

Кожен раунд застосовує окрему нелінійну допоміжну функцію до трьох із чотирьох 32-бітних слів стану (A, B, C, D). Раунд 1 використовує F(B,C,D) = (B AND C) OR (NOT B AND D) — побітовий умовний селектор. Раунд 2 використовує G(B,C,D) = (B AND D) OR (C AND NOT D) — доповнювальний селектор. Раунд 3 використовує H(B,C,D) = B XOR C XOR D — функцію парності. Раунд 4 використовує I(B,C,D) = C XOR (B OR NOT D) — асиметричний комбайнер. Ці чотири функції забезпечують вплив кожного біта вхідних даних на вихідний дайджест, породжуючи лавинний ефект, що змушує невеликі зміни вхідних даних спричиняти великі, непередбачувані зміни результуючого хешу.

Input: "hello world"
MD5: 5eb63bbbe01eeed093cb22bb8f5acdc3
(128 bits = 16 bytes = 32 hex characters)

Алгоритм виконується у п'ять етапів: (1) додається біт 1, потім нулі, доки довжина повідомлення не стане 448 mod 512; (2) додається початкова довжина повідомлення як 64-бітне ціле число у форматі little-endian; (3) ініціалізуються чотири 32-бітні змінні стану (A, B, C, D) із фіксованими константами; (4) кожен 512-бітний блок обробляється через 64 операції з використанням чотирьох нелінійних функцій (F, G, H, I), по одній на раунд із 16 операцій; (5) отриманий стан додається до поточного підсумку, і виводиться фінальний 128-бітний хеш у форматі little-endian.

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

Як генерувати хеші MD5 у популярних мовах і середовищах. Зверніть увагу, що MD5 недоступний у браузерному Web Crypto API — використовуйте бібліотеку або Node.js.

JavaScript (Web Crypto — browser & Node.js)
// MD5 is not available in Web Crypto API (it only supports SHA-*)
// Use a library like 'js-md5' or the Node.js crypto module

// Node.js (built-in crypto)
const crypto = require('crypto')
const hash = crypto.createHash('md5').update('hello world').digest('hex')
console.log(hash) // → "5eb63bbbe01eeed093cb22bb8f5acdc3"

// With Unicode input
crypto.createHash('md5').update('cafe\u0301').digest('hex')
// → "4fad076bae205e95bec9dacea498e2ab"
Python
import hashlib

# Basic MD5 hash
result = hashlib.md5(b'hello world').hexdigest()
print(result)  # → "5eb63bbbe01eeed093cb22bb8f5acdc3"

# Hash a string (must encode to bytes first)
text = 'hello world'
hashlib.md5(text.encode('utf-8')).hexdigest()
# → "5eb63bbbe01eeed093cb22bb8f5acdc3"

# Hash a file
with open('file.bin', 'rb') as f:
    md5 = hashlib.md5()
    for chunk in iter(lambda: f.read(8192), b''):
        md5.update(chunk)
    print(md5.hexdigest())
Go
package main

import (
    "crypto/md5"
    "fmt"
)

func main() {
    data := []byte("hello world")
    hash := md5.Sum(data)
    fmt.Printf("%x\n", hash)
    // → 5eb63bbbe01eeed093cb22bb8f5acdc3
}
CLI (Linux / macOS)
# Using md5sum (Linux) or md5 (macOS)
echo -n "hello world" | md5sum
# → 5eb63bbbe01eeed093cb22bb8f5acdc3  -

# macOS
echo -n "hello world" | md5
# → 5eb63bbbe01eeed093cb22bb8f5acdc3

# Hash a file
md5sum package.json
# → a1b2c3d4e5f6...  package.json

# Using openssl (cross-platform)
echo -n "hello world" | openssl md5
# → MD5(stdin)= 5eb63bbbe01eeed093cb22bb8f5acdc3

Поширені запитання

Чи безпечний MD5 для використання?
Він не є безпечним для застосувань, чутливих до безпеки, таких як цифрові підписи, TLS-сертифікати або хешування паролів. Практичні атаки на колізії були продемонстровані з 2004 року, а атаки на колізії з довільним префіксом тепер можливі за лічені секунди на звичайному обладнанні. Для завдань, не пов'язаних із безпекою — контрольні суми, ключі кешу, дедублікація вмісту — алгоритм залишається практичним і широко підтримуваним вибором.
У чому різниця між MD5 та SHA-256?
Алгоритм MD5 генерує 128-бітний (32-символьний у шістнадцятковому форматі) дайджест і є вразливим до атак на колізії. SHA-256 генерує 256-бітний (64-символьний у шістнадцятковому форматі) дайджест і не має відомих практичних атак. SHA-256 приблизно на 30-40% повільніший за старіший алгоритм на тому ж обладнанні, але додатковий запас безпеки робить його вибором за замовчуванням для будь-якого застосування, де перевірка цілісності повинна витримувати зловмисне втручання.
Чи можна відновити вихідні дані з хешу MD5?
Ні. Ця хеш-функція є однобічною за своєю природою — вона відкидає інформацію під час хешування. Однак для коротких або поширених вхідних даних зловмисники можуть використовувати веселкові таблиці (попередньо обчислені відповідності хеш-до-відкритого-тексту) або перебір для знаходження вихідних даних. Тому її ніколи не слід використовувати для зберігання паролів. Натомість використовуйте bcrypt, scrypt або Argon2.
Чому різні інструменти іноді генерують різні хеші MD5 для одного й того ж тексту?
Найпоширенішою причиною є відмінності в кодуванні. Алгоритм працює з байтами, а не символами. Рядок 'hello' дає різні хеші при кодуванні як UTF-8, UTF-16 або Latin-1. Іншою частою проблемою є кінцеві символи нового рядка: echo у більшості оболонок додає символ нового рядка (\n), якщо не використовувати echo -n. Завжди перевіряйте точні байти, що хешуються.
Скільки часу займає обчислення хешу MD5?
Алгоритм надзвичайно швидкий. На сучасному обладнанні він обробляє дані зі швидкістю 3-6 ГБ/с на одному ядрі CPU. GPU може обчислювати мільярди контрольних сум за секунду. Ця швидкість є перевагою для перевірки файлів, але недоліком для хешування паролів, де більш повільні алгоритми (bcrypt, Argon2) є кращими саме тому, що вони протидіють атакам перебором.
Що таке колізія MD5 і чому це важливо?
Колізія виникає, коли два різних вхідних значення дають однаковий хеш-дайджест. У 2004 році Сяоюнь Ван продемонструвала першу практичну колізію проти MD5. До 2012 року шкідливе ПЗ Flame використало колізію для підробки сертифіката підпису коду Microsoft. Сьогодні колізії з однаковим префіксом можна обчислити менш ніж за хвилину. Це робить алгоритм непридатним для будь-якого застосування, що покладається на стійкість до колізій, наприклад цифрових підписів або прив'язки сертифікатів.
Що краще використовувати для контрольних сум файлів: MD5 чи CRC32?
Ця контрольна сума є кращим вибором, ніж CRC32, для перевірки цілісності файлів. CRC32 — це 32-бітний код виявлення помилок, розроблений для виявлення випадкового пошкодження під час передачі, а не навмисного втручання. Його малий вихідний простір означає, що колізії тривіально легко побудувати. MD5 забезпечує 128-бітний дайджест зі значно кращою стійкістю до випадкових колізій. Для ситуацій із зловмисником (перевірка завантажень із ненадійних джерел) використовуйте SHA-256.