ToolDeck

تولیدکننده هش MD5

تولید هش MD5 از هر متنی

متن ورودی

به‌صورت محلی اجرا می‌شود · جای‌گذاری اسرار امن است

هش MD5

هش MD5 اینجا نمایش داده می‌شود…

هش MD5 چیست؟

MD5 (الگوریتم خلاصه‌پیام ۵) یک تابع هش رمزنگاری است که یک خلاصه ثابت ۱۲۸ بیتی (۱۶ بایت) از هر ورودی، صرف‌نظر از اندازه آن، تولید می‌کند. این الگوریتم در سال ۱۹۹۲ توسط Ronald Rivest به‌عنوان RFC 1321 منتشر شد و به‌عنوان جانشین سریع‌تر MD4 طراحی شد و به‌سرعت به یکی از پرکاربردترین توابع هش در اینترنت تبدیل شد. الگوریتم ورودی را در بلوک‌های ۵۱۲ بیتی از طریق چهار دور ۱۶ عملیاتی پردازش می‌کند و در هر دور از یک تابع غیرخطی متفاوت استفاده می‌کند تا یک اثرانگشت هگز ۳۲ کاراکتری تولید کند.

یک تابع هش یک تبدیل یک‌طرفه است: با داشتن یک ورودی، می‌توانید هش را فوری محاسبه کنید، اما با داشتن تنها هش، نمی‌توانید ورودی اصلی را بازیابی کنید. حتی تغییر یک بیت در ورودی یک خلاصه کاملاً متفاوت تولید می‌کند — خاصیتی که اثر بهمنی نامیده می‌شود. MD5 یک فضای ورودی نامتناهی را به یک فضای خروجی ثابت ۱۲۸ بیتی نگاشت می‌کند، بنابراین تصادم‌ها (دو ورودی متفاوت که هش یکسانی تولید می‌کنند) از نظر ریاضی قطعاً وجود دارند، اما یک تابع هش امن یافتن آنها را از نظر محاسباتی ناممکن می‌کند.

از سال ۲۰۰۴، محققان حملات تصادم عملی علیه MD5 را به اثبات رسانده‌اند، به این معنا که MD5 دیگر برای امضاهای دیجیتال، گواهی‌ها، یا هر بافتی که مقاومت در برابر تصادم لازم است امن محسوب نمی‌شود. با این حال، MD5 هنوز برای اهداف غیرامنیتی به‌طور گسترده‌ای استفاده می‌شود: تأیید یکپارچگی فایل پس از دانلود، تولید کلیدهای کش، حذف تکراری محتوا، و ایجاد شناسه‌های قطعی از رشته‌ها. برای این کاربردها، سرعت الگوریتم و پشتیبانی گسترده کتابخانه‌ها آن را به یک انتخاب عملی تبدیل می‌کند. در سال ۲۰۰۸، Marc Stevens و همکارانش یک حمله تصادم با پیشوند انتخابی منتشر کردند، به این معنا که مهاجم می‌تواند دو سند با پیشوندهای دلخواه انتخابی بسازد که خلاصه یکسانی دارند. این تکنیک در CCC ۲۰۰۸ (کائوس کامیونیکیشن کانگرس) با ساخت یک گواهی مرجع صدور جعلی به نمایش گذاشته شد. بدافزار Flame در سال ۲۰۱۲ متعاقباً از تصادم‌های با پیشوند انتخابی برای جعل گواهی امضای کد Microsoft سوء استفاده کرد و به بدافزار اجازه داد به‌عنوان یک بسته به‌روزرسانی قانونی Windows Update ظاهر شود. این سوءاستفاده‌های واقعی تأیید کرد که این الگوریتم برای هر کاربردی که به پایه اعتماد متکی است از نظر رمزنگاری شکسته شده و نباید در جایی که مهاجم می‌تواند بر ورودی‌های هش‌شده تأثیر بگذارد به آن متکی شد.

RFC 1321 — The MD5 Message-Digest Algorithm →

چرا از این تولیدکننده MD5 استفاده کنیم؟

هش‌های MD5 را فوری بدون نصب هیچ چیز یا نوشتن کد تولید کنید. متن خود را بچسبانید و خلاصه hex ۳۲ کاراکتری را در لحظه دریافت کنید.

هش‌گیری فوری
خروجی با تایپ شما به‌روزرسانی می‌شود. بدون کلیک دکمه، بدون انتظار — خلاصه MD5 کاراکتر به کاراکتر همزمان با ویرایش ورودی نمایش داده می‌شود.
🔒
پردازش با اولویت حریم خصوصی
تمام هش‌گیری به‌صورت محلی در مرورگر شما با استفاده از JavaScript اجرا می‌شود. متن ورودی شما هرگز دستگاهتان را ترک نمی‌کند و هیچ‌گاه به هیچ سروری ارسال نمی‌شود.
📋
کپی با یک کلیک
هش را با یک کلیک در کلیپ‌بورد کپی کنید. بین خروجی hex با حروف کوچک و بزرگ جابه‌جا شوید تا با هر فرمتی که سیستم شما انتظار دارد مطابقت داشته باشد.
🔍
بدون نیاز به حساب کاربری
بدون ثبت‌نام، بدون ورود، بدون محدودیت استفاده. صفحه را باز کنید و فوری شروع به هش‌گیری کنید. روی هر دستگاهی با یک مرورگر مدرن کار می‌کند.

موارد استفاده MD5

توسعه فرانت‌اند
هش‌های cache-busting برای فایل‌های استاتیک تولید کنید. یک خلاصه MD5 از محتوای فایل را به URL‌های CSS و JavaScript ضمیمه کنید تا مرورگرها نسخه به‌روزشده را هنگام تغییر محتوا دریافت کنند.
مهندسی بک‌اند
کلیدهای کش قطعی از پارامترهای پرس‌وجوی پیچیده یا بدنه درخواست‌ها ایجاد کنید. هش‌های MD5 کلیدهای فشرده و با طول ثابتی تولید می‌کنند که با Redis، Memcached، و لایه‌های کش CDN به‌خوبی کار می‌کنند.
DevOps و CI/CD
یکپارچگی فایل را پس از انتقال با مقایسه checksum‌های MD5 تأیید کنید. بسیاری از مخازن بسته و مخازن آرتیفکت خلاصه‌های MD5 را در کنار دانلودها برای تأیید سریع منتشر می‌کنند.
QA و آزمون
هش‌های MD5 پاسخ‌های API، dump‌های پایگاه داده، یا فایل‌های پیکربندی را مقایسه کنید تا تغییرات غیرمنتظره بین اجراهای آزمون بدون مقایسه کامل محتوا شناسایی شوند.
مهندسی داده
رکوردها را در pipeline‌های 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-Damgård پردازش می‌کند: پیام تا مضربی از ۵۱۲ بیت padding می‌شود، به بلوک‌ها تقسیم می‌شود، و هر بلوک از طریق چهار دور ۱۶ عملیات بیتی که ورودی را با ثابت‌های مشتق‌شده از سینوس از پیش محاسبه شده ترکیب می‌کنند، عبور می‌کند. نتیجه یک وضعیت ۱۲۸ بیتی است که به خلاصه نهایی تبدیل می‌شود.

هر دور یک تابع کمکی غیرخطی متمایز را روی سه تا از چهار کلمه وضعیت ۳۲ بیتی (A، B، C، D) اعمال می‌کند. دور ۱ از F(B,C,D) = (B AND C) OR (NOT B AND D) استفاده می‌کند — یک انتخابگر شرطی بیتی. دور ۲ از G(B,C,D) = (B AND D) OR (C AND NOT D) استفاده می‌کند — یک انتخابگر مکمل. دور ۳ از H(B,C,D) = B XOR C XOR D استفاده می‌کند — یک تابع توازن. دور ۴ از I(B,C,D) = C XOR (B OR NOT D) استفاده می‌کند — یک ترکیب‌کننده نامتقارن. این چهار تابع تضمین می‌کنند که هر بیت ورودی بر خلاصه خروجی تأثیر می‌گذارد و اثر بهمنی را تولید می‌کنند که باعث می‌شود تغییرات کوچک ورودی تغییرات بزرگ و غیرقابل پیش‌بینی در هش نتیجه ایجاد کنند.

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

الگوریتم در پنج مرحله پیش می‌رود: (۱) افزودن یک بیت ۱، سپس صفرها، تا زمانی که طول پیام ۴۴۸ mod 512 شود؛ (۲) افزودن طول اصلی پیام به‌صورت یک عدد صحیح ۶۴ بیتی little-endian؛ (۳) مقداردهی اولیه چهار متغیر وضعیت ۳۲ بیتی (A، B، C، D) با مقادیر ثابت؛ (۴) پردازش هر بلوک ۵۱۲ بیتی از طریق ۶۴ عملیات با استفاده از چهار تابع غیرخطی (F، G، H، I)، یکی برای هر دور ۱۶ عملیاتی؛ (۵) افزودن وضعیت حاصل به جمع جاری و خروجی دادن هش نهایی ۱۲۸ بیتی به ترتیب بایت 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، یا هش رمز عبور امن نیست. حملات تصادم عملی از سال ۲۰۰۴ به اثبات رسیده‌اند، و حملات تصادم با پیشوند انتخابی اکنون در چند ثانیه روی سخت‌افزار معمولی قابل انجام هستند. برای استفاده‌های غیرامنیتی — checksum‌ها، کلیدهای کش، حذف تکراری محتوا — الگوریتم همچنان یک انتخاب عملی و با پشتیبانی گسترده است.
تفاوت بین MD5 و SHA-256 چیست؟
الگوریتم MD5 یک خلاصه ۱۲۸ بیتی (۳۲ کاراکتر hex) تولید می‌کند و در برابر حملات تصادم آسیب‌پذیر است. SHA-256 یک خلاصه ۲۵۶ بیتی (۶۴ کاراکتر hex) تولید می‌کند و هیچ حمله عملی شناخته‌شده‌ای ندارد. SHA-256 تقریباً ۳۰ تا ۴۰ درصد کندتر از الگوریتم قدیمی‌تر روی همان سخت‌افزار است، اما حاشیه امنیتی اضافی آن را به انتخاب پیش‌فرض برای هر کاربردی که تأیید یکپارچگی باید در برابر دستکاری مخرب مقاوم باشد تبدیل می‌کند.
آیا می‌توان هش MD5 را به ورودی اصلی برگرداند؟
خیر. این تابع هش از طریق طراحی یک‌طرفه است — اطلاعات را در طول هش‌گیری از دست می‌دهد. با این حال، برای ورودی‌های کوتاه یا رایج، مهاجمان می‌توانند از rainbow tables (نگاشت‌های از پیش محاسبه‌شده هش به متن ساده) یا brute force برای یافتن ورودی اصلی استفاده کنند. به همین دلیل است که هرگز نباید برای ذخیره رمز عبور استفاده شود. به جای آن از bcrypt، scrypt، یا Argon2 استفاده کنید.
چرا ابزارهای مختلف گاهی هش‌های MD5 متفاوتی برای متن یکسان تولید می‌کنند؟
شایع‌ترین دلیل تفاوت‌های کدگذاری کاراکتر است. الگوریتم روی بایت‌ها عمل می‌کند، نه کاراکترها. رشته 'hello' هنگام رمزگذاری به‌صورت UTF-8 در مقابل UTF-16 در مقابل Latin-1 هش‌های متفاوتی تولید می‌کند. مشکل رایج دیگر خطوط جدید انتهایی است: دستور echo در اکثر shell‌ها یک خط جدید (\n) اضافه می‌کند مگر اینکه از echo -n استفاده کنید. همیشه بایت‌های دقیقی که هش می‌شوند را تأیید کنید.
محاسبه یک هش MD5 چقدر طول می‌کشد؟
الگوریتم بسیار سریع است. روی سخت‌افزار مدرن، داده‌ها را با سرعت ۳ تا ۶ گیگابایت در ثانیه روی یک هسته CPU پردازش می‌کند. یک GPU می‌تواند میلیاردها checksum در ثانیه محاسبه کند. این سرعت برای تأیید فایل مزیت است اما برای هش رمز عبور ضعف محسوب می‌شود، جایی که الگوریتم‌های کندتر (bcrypt، Argon2) به‌طور خاص چون در برابر حملات brute-force مقاومت می‌کنند ترجیح داده می‌شوند.
تصادم MD5 چیست و چرا اهمیت دارد؟
یک تصادم زمانی رخ می‌دهد که دو ورودی متفاوت خلاصه هش یکسانی تولید کنند. در سال ۲۰۰۴، Xiaoyun Wang اولین تصادم عملی علیه MD5 را به اثبات رساند. تا سال ۲۰۱۲، بدافزار Flame از یک تصادم برای جعل گواهی امضای کد Microsoft سوء استفاده کرد. امروزه تصادم‌های identical-prefix در کمتر از یک دقیقه قابل محاسبه هستند. این الگوریتم را برای هر کاربردی که به مقاومت در برابر تصادم متکی است، مانند امضاهای دیجیتال یا certificate pinning، نامناسب می‌کند.
آیا باید از MD5 یا CRC32 برای checksum فایل استفاده کنم؟
این checksum برای تأیید یکپارچگی فایل انتخاب بهتری نسبت به CRC32 است. CRC32 یک کد شناسایی خطای ۳۲ بیتی است که برای شناسایی خرابی تصادفی در انتقال طراحی شده است، نه دستکاری عمدی. فضای خروجی کوچک آن به این معناست که ساخت تصادم‌ها بسیار آسان است. MD5 یک خلاصه ۱۲۸ بیتی با مقاومت تصادم تصادفی بسیار قوی‌تر ارائه می‌دهد. برای سناریوهای مخرب (تأیید دانلودها از منابع غیرقابل اعتماد)، به جای آن از SHA-256 استفاده کنید.