ابزارهای توسعه‌دهنده

تولید کننده هش و مجموع‌برگ

MD5، SHA-1، SHA-256، SHA-384 و SHA-512 را برای متن و فایل‌ها همزمان دریافت کنید. یک فایل دانلود شده را در مقابل مجموع‌برگ رسمی آن بررسی کنید تا مطمئن شوید دستکاری نشده است. همه موارد محلی، چیزی از مرورگر شما خارج نمی‌شود.

5 الگوریتم همزمان مجموع‌برگ متن + فایل محلی، صفر آپلود نتایج فوری
حروف بایت‌های UTF-8

ویژگی‌ها

هر پنج هش در یک صفحه

از اثر انگشت سریع گرفته تا امضاهای امن - هر هشی که توسعه‌دهندگان، اپراتورها و بررسی دانلودها نیاز دارند.

01

پنج الگوریتم

MD5، SHA-1، SHA-256، SHA-384 و SHA-512 به همراه طول بیت خروجی نمایش داده می‌شوند - دیگر نیازی به جابجایی بین ابزارها نیست.

02

محاسبه در زمان واقعی

هش‌های متن هنگام تایپ، بدون نیاز به دکمه. نتایج با قلم تک‌فاصله‌ای - روی یک ردیف کلیک کنید تا کپی شود.

03

بررسی یکپارچگی فایل

یک نصب‌کننده، تصویر دیسک یا آرشیو را رها کنید و آن را با مجموع‌برگ رسمی مقایسه کنید تا دانلود بدون دستکاری تأیید شود.

04

محلی، صفر آپلود

خانواده SHA از Web Crypto API داخلی مرورگر استفاده می‌کند. متن و فایل‌ها هرگز از ماشین شما خارج نمی‌شوند - محتوای حساس مشکلی ندارد.

05

سازگار با UTF-8

متن به عنوان بایت‌های UTF-8 هش می‌شود، بنابراین نتایج دقیقاً با md5sum، md5() PHP و hashlib مطابقت دارند.

06

کپی یک‌کلیک

هر هش را به صورت جداگانه کپی کنید، یا همه آن‌ها را به فرم استاندارد جمع‌بندی درست کنید تا آماده چسباندن در ترمینال باشد.

آنچه باید درباره هش‌ها بدانید

ایده ساده است، اما استفاده از هش اشتباه برای کار اشتباه یک اشتباه امنیتی واقعی است.

MD5 و SHA-1 دقیقاً چه چیزهایی هستند؟

MD5 (الگوریتم خلاصه پیام 5) توسط رونالد ریوست در MIT طراحی و در سال 1992 به عنوان RFC 1321 منتشر شد و یک خلاصه ثابت 128 بیتی (32 کاراکتر هگز) به عنوان جانشین MD4 تولید می‌کند. SHA-1 توسط آژانس امنیت ملی ایالات متحده طراحی و در سال 1995 به عنوان استاندارد فدرال FIPS 180-1 منتشر شد و 160 بیت تولید می‌کند. هر دو در دو دهه بعد به پرکاربردترین الگوریتم‌های هش تبدیل شدند — برای جمع‌بندی فایل‌ها، ذخیره رمز عبور، امضای دیجیتال و شناسه‌های کامیت Git استفاده می‌شوند. توجه کنید که آن‌ها هنوز امروز خلاصه‌های صحیح تولید می‌کنند؛ «ناامن» یعنی مقاومت آن‌ها در برابر برخورد شکسته شده است، نه اینکه خروجی آن‌ها اشتباه است.

آیا هش‌سازی، رمزگذاری و رمزنگاری همان چیز هستند؟

نه — آن‌ها مشکلات مختلفی را حل می‌کنند. رمزگذاری (مانند Base64 یا رمزگذاری URL) یک تبدیل فرم برگشت‌پذیر است که هر کسی می‌تواند آن را لغو کند و هیچ امنیتی ارائه نمی‌دهد. رمزنگاری با کلید برگشت‌پذیر است: متن ساده به متن رمز تبدیل می‌شود و کلید صحیح آن را رمزگشایی می‌کند. هش‌سازی یک‌طرفه است، کلیدی ندارد و اصلی را نمی‌توان از خلاصه بازیابی کرد — برای اثر انگشت، بررسی صحت و امضاها استفاده می‌شود. دو سوء تفاهم رایج: در نظر گرفتن Base64 به عنوان «رمزنگاری»، و گفتن که یک رمز عبور «با MD5 رمزگذاری شده» — این هش‌سازی است و یک روش ناامن برای ذخیره رمزهای عبور نیز هست.

چرا یک هش نمی‌تواند به حالت اصلی برگردانده شود؟

هش یک تابع یک‌طرفه است: ورودی هر طول به یک خلاصه طول ثابت فشرده می‌شود و بیشتر اطلاعات را پوشش می‌دهد. درست مانند اینکه نمی‌توانید یک جمله را از تعداد کلمات آن بازسازی کنید، اصلی را نمی‌توان از خلاصه استخراج کرد. الگوریتم‌های امن به طور خاص طراحی شده‌اند که چنین برگشتی را از نظر محاسباتی غیرممکن سازند.

آیا MD5 و SHA-1 هنوز قابل استفاده هستند؟

برای بررسی اینکه آیا یک فایل به طور تصادفی در حمل خراب شده است — بله، هر تغییر بایت پراکنده تقریباً همیشه MD5 را تغییر می‌دهد. اما هرگز برای امنیت: حملات برخورد عملی برای هر دو وجود دارد (پژوهشگران می‌توانند دو فایل مختلف با MD5 یکسان تحت کنترل خود بسازند). برای رمزهای عبور، امضاها و گواهی‌ها از SHA-256 یا بالاتر استفاده کنید.

چرا هش من برای همان متن با ابزار دیگر متفاوت است؟

سه مقصر معمول: ① رمزگذاری شخصیت‌های مختلف (این ابزار همیشه از UTF-8 استفاده می‌کند؛ ابزارهای قدیمی‌تر ممکن است از GBK یا Latin-1 استفاده کنند); ② خط پایانی خروجی — echo خط فرمان به صورت پیش‌فرض یکی اضافه می‌کند (از echo -n استفاده کنید); ③ یک فضای پراکنده یا شخصیت نامرئی هنگام کپی. هش‌ها به هر بایت حساس هستند، بنابراین یک بایت کم نتیجه را کاملاً تغییر می‌دهد.

چرا رمزهای عبور نمی‌توانند به صورت MD5/SHA-256 ساده ذخیره شوند؟

هش‌های معمول سریع هستند. با جدول هش نشت کرده، مهاجمان می‌توانند میلیاردها حدس در ثانیه را امتحان کنند و جداول رنگی رمزهای عبور رایج را فوراً برگشت می‌دهند. رمزهای عبور به الگوریتم‌های عمدتاً کند و حافظه‌سخت (bcrypt, scrypt, Argon2) با یک نمک منحصر به فرد برای هر رمز عبور نیاز دارند که شکست اجباری را بسیار گران می‌کند.

چگونه صحت فایل دانلود شده را تأیید کنم؟

کلمه کنترل جمع (checksum) منتشر شده در سایت رسمی (معمولاً SHA-256) را پیدا کنید، فایل دانلود شده را به تب «کلمه کنترل جمع فایل» اینجا بکشید و مقدار رسمی را در کادر بالای نتایج جای‌گذاری کنید. ابزار الگوریتم را از طول مقدار تشخیص می‌دهد و ردیف مطابق را سبز می‌کند وقتی بایت‌های فایل دقیقاً همان چیزی است که ناشر منتشر کرده؛ قرمز به معنی خرابی یا جایگزینی توسط انسان در شبکه است — فایل را اجرا نکنید.

کدام یک از پنج الگوریتم باید استفاده شود

بر اساس سناریو انتخاب کنید. الگوریتم‌های جدیدتر خلاصه‌های طولانی‌تری تولید می‌کنند، در برابر حملات بهتر مقاومت دارند و کمی بیشتر هزینه محاسبه دارند.

الگوریتم معرفی شد طول خروجی امنیت کاربرد معمولی
MD5 1992 128 بیت (32 کاراکتر) شکسته شده؛ برخوردها عملی هستند اثار انگشت غیر امن، حذف تکرارها، سازگاری با قدیمی
SHA-1 1995 160 بیت (40 کاراکتر) برخوردها از سال 2017 عملی هستند شناسه‌های تاریخچه Git و دیگر سیستم‌های قدیمی؛ برای کاربردهای امنیتی جدید مناسب نیست
SHA-256 2001 256 بیت (64 کاراکتر) امن امروز کلمات کنترل جمع فایل، امضاها، گواهی‌های TLS، بلاکچین‌ها — پیش‌فرض جهانی
SHA-384 2001 384 بیت (96 کاراکتر) امن SHA-512 کوتاه شده برای رژیم‌های انطباق که نیاز به 384 بیت دارند
SHA-512 2001 512 بیت (128 کاراکتر) امن امضاها با اطمینان بالا؛ اغلب سریع‌تر از SHA-256 در CPUهای 64 بیتی

«امن» به معنی عدم وجود حمله برخورد عمومی عملی تا کنون است. برای ذخیره رمز عبور از bcrypt/Argon2 صرف نظر از انتخاب هش استفاده کنید.

کلمات کنترل جمع: چگونه یک فایل دانلود شده را واقعاً تأیید کنید

هدف از آن رشته MD5 یا SHA-256 در صفحه دانلود، نحوه مقایسه آن و چیزی که باید با آن مقایسه شود — همه در یک بخش.

چرا اصلاً تأیید کنیم

فایل روی دیسک شما لزوماً فایل روی سرور نیست. ده ثانیه مقایسه کلمه کنترل جمع در برابر سه نوع مشکل محافظت می‌کند:

خرابی در انتقال

فایل‌های بزرگ در دانلودهای از سر گرفته‌شونده و شبکه‌های ناپایدار اغلب بایت‌های اضافی دریافت می‌کنند؛ عیب‌یابی یک نصب‌کننده شکسته بسیار بیشتر از ده ثانیه طول می‌کشد.

آینه‌های خارج از هماهنگی

بسیاری از دانلودها در واقع از آینه‌ها یا CDNs می‌آیند، جایی که تاخیر هماهنگی یا نقص کش می‌تواند نسخه قدیمی یا نیمی از فایل را به شما تحویل دهد.

دستکاری عمدی

وقتی منبع دانلود نقض می‌شود یا یک شبکه عمومی ربوده می‌شود، فایل‌ها می‌توانند پشت‌درور شوند. در سال 2016 سایت Linux Mint هک شد و لینک‌های دانلود آن با یک ISO پشت‌درور جایگزین شدند — اولین واکنش پروژه از همه خواست تا کلمه کنترل جمع را بررسی کنند.

کلمه کنترل جمع چیست

ناشر، فایل را بر روی سرور خود هش می‌کند و نتیجه را در صفحه دانلود قرار می‌دهد. پس از دانلود، شما محلی آن را دوباره هش می‌کنید. اگر دو رشته دقیقاً با هم مطابقت داشته باشند، بایت‌های فایل دقیقاً همان چیزی هستند که ناشر منتشر کرده — نه خراب و نه دستکاری شده. این بررسی به هر بایت حساس است: اگر یک بایت تغییر کند، مقدار کاملاً تغییر می‌کند. به طور کلی، چک‌سام‌ها شامل طرح‌های ساده‌تری مانند CRC32 هستند که فقط خرابی‌های تصادفی را شناسایی می‌کنند، در حالی که هش‌های رمزنگاری مانند MD5/SHA در برابر جعل عمدی نیز مقاومت دارند.

تأیید فایل در سه مرحله

  1. 1
    دریافت چک‌سام رسمی

    در صفحه دانلود، مقدار منتشر شده MD5/SHA-256 را پیدا کنید (اغلب با عنوان «checksum» یا به صورت فایل همراه .sha256 ارائه می‌شود) و کل رشته را کپی کنید.

  2. 2
    رها کردن فایل و چسباندن

    به تب «File checksum» در بالا بروید، فایل دانلود شده را رها کنید و چک‌سام را در کادر بالای نتایج جای‌گذاری کنید.

  3. 3
    خواندن نتیجه با رنگ

    ابزار الگوریتم را از طول مقدار تشخیص می‌دهد: سبز به معنی فایل دقیقاً با نسخه رسمی مطابقت دارد و برای استفاده ایمن است؛ قرمز به معنی ممکن است خراب یا دستکاری شده باشد — از اجرای خودداری کنید.

خواندن چک‌سام‌ها در سایت‌های رسمی

صفحات دانلود چک‌سام‌ها را به اشکال مختلف می‌نویسند، اما همه به دو عنصر خلاصه می‌شوند: مقدار هش و نام فایل. این سه فرم رایج‌ترین هستند — هنگام چسباندن، فقط بخش هش را بگیرید (این ابزار به طور خودکار فضاها و خطوط را نادیده می‌گیرد):

# 1. خط واحد: فقط مقدار
a0570aa01532917be820a37994710cf09b6eba198bf9543c27be938c5f09e60a

# 2. فرمت sha256sum: مقدار + دو فاصله + نام فایل (مانifest SHA256SUMS شامل بسیاری از خطوط از این دست است)
a0570aa01532917be820a37994710cf09b6eba198bf9543c27be938c5f09e60a  ubuntu-24.04.iso

# 3. فرمت BSD: الگوریتم (نام فایل) = مقدار
SHA256 (ubuntu-24.04.iso) = a0570aa01532917be820a37994710cf09b6eba198bf9543c27be938c5f09e60a

MD5 یا SHA-256

هرچه سایت رسمی ارائه می‌دهد را تأیید کنید، اما اگر انتخاب دارید: MD5 کاملاً در برابر خرابی تصادفی در حین انتقال کافی است (هر تغییر ناگهانی تقریباً همیشه MD5 را تغییر می‌دهد). در برابر دستکاری عمدی — نرم‌افزارهای امنیتی، گواهی‌ها، بسته‌های امضا شده — به SHA-256 یا قوی‌تر نیاز دارید، زیرا حملات تصادم عملی به مهاجمان اجازه می‌دهد دو فایل متفاوت با MD5 یکسان بسازند. این داستان در «تاریخچه امنیتی» زیر توضیح داده شده است.

تأیید از خط فرمان به جای آن

در لینوکس و macOS، ابزارهای چک‌سام -c را برای تأیید خودکار یک مانifest کامل می‌پذیرند — نیازی به مقایسه دستی نیست. دستورات داخلی ویندوز فقط مقدار را محاسبه می‌کنند، که سپس خودتان را با رشته رسمی مقایسه می‌کنید.

محیط دستور تأیید
لینوکس sha256sum -c SHA256SUMS (بررسی هر فایل فهرست شده در مانifest)
macOS shasum -a 256 -c checksum.txt
بررسی سریع مقدار واحد echo "official-value filename" | sha256sum -c - (در صورت موفقیت OK چاپ می‌کند)
ویندوز محاسبه با Get-FileHash <file> -Algorithm SHA256، سپس مقایسه با مقدار رسمی

تاریخچه مختصر امنیتی: چگونه MD5 شکسته شد

MD5 یک شبه شکست نخورد — از اولین شکست در دانشگاه تا گواهی‌های جعل شده در محیط واقعی، دو دهه طول کشید.

  1. 1992

    MD5 منتشر شد

    رونالد ریوست MD5 را در RFC 1321 معرفی کرد. سریع، ساده در پیاده‌سازی و همیشه تولید کننده یک هش 128 بیتی، به سرعت به استاندارد استاندارد غیررسمی برای جمع‌های کنترلی فایل‌ها و ذخیره رمز عبور تبدیل شد — و از نظر رمزنگاری امن در نظر گرفته می‌شد.

  2. 2004

    تیم وانگ شیائویون همپوشانی کامل MD5 را آشکار کرد

    در CRYPTO 2004، تیمی به رهبری ریاضیدان چینی وانگ شیائویون حمله همپوشانی کامل به MD5 را نشان دادند — ساخت دو فایل با محتوای متفاوت اما هش یکسان (در ابتدا در حدود یک ساعت در ابررایانه IBM P690؛ بهبودهای بعدی آن را به چند ثانیه روی سخت‌افزار معمولی کاهش داد). مقاومت در برابر همپوشانی که MD5 قول داده بود از بین رفت؛ ایستادن کف زدن‌های بعدی به یکی از مشهورترین لحظات در رمزنگاری تبدیل شد.

  3. 2008

    گواهی‌های جعلی در اینترنت واقعی ظاهر شدند

    مارک استیونز، الکساندر سوتیروف و دیگران از همپوشانی با پیشوند انتخاب شده برای جعل یک گواهی CA میانی استفاده کردند که توسط مرورگرها مورد اعتماد بود: گواهی‌های با پیشوندهای متفاوت امضای یکسان را حمل می‌کردند. یک مهاجم اکنون می‌توانست گواهی‌های معتبر HTTPS را برای هر سایت جعلی صادر کند. مراکز گواهی کوتاهی پس از آن از صدور گواهی‌های MD5 دست کشیدند.

  4. بدافزار Flame از MD5 برای حمله به ویندوز استفاده کرد

    بدافزار Flame از MD5 برای حمله به ویندوز استفاده کرد

    بدافزار Flame که توسط دولت حمایت می‌شد از همپوشانی MD5 استفاده کرد تا مرجع مجوز سرور پایانه مایکروسافت را وادار به امضای یک گواهی جعلی کد امضای کند، و اجازه دهد آن تحت عنوان به‌روزرسانی امضا شده توسط مایکروسافت در سراسر خاورمیانه پخش شود. این اولین حمله در دنیای واقعی با استفاده از همپوشانی MD5 بود؛ مایکروسافت گواهی را در یک وصله اضطراری لغو کرد.

  5. 2017

    SHAttered: SHA-1 سقوط کرد

    گوگل و موسسه هلندی CWI (مارک استیونز و همکاران) دو فایل PDF متفاوت با هش SHA-1 یکسان را منتشر کردند — با هزینه تقریباً 6500 سال CPU و 110 سال GPU. مرورگرها کوتاهی پس از آن اعتماد به گواهی‌های SHA-1 را حذف کردند، و پلتفرم‌های Git مهاجرت خود را از آن تسریع کردند. عصر 160 بیتی پایان یافت.

تفاوت مهم: حمله همپوشانی هش هیچ فایل موجود را "شکست" نمی‌کند — دو فایل خاص را می‌سازد که به یک مقدار هش می‌شوند. اما برای امضا و گواهی‌ها، این برای جعل فاتح کافی است.

هش از خط فرمان

وقتی مرورگر در دسترس نیست، هر سیستم عامل یک دستور داخلی دارد (SHA-256 نمایش داده شده).

محیط دستور
لینوکس / macOS sha256sum filename (در macOS: shasum -a 256 filename)
Windows PowerShell Get-FileHash filename -Algorithm SHA256
Windows CMD certutil -hashfile filename SHA256

هش در کد

نمونه‌های حداقلی در چهار زبان رایج هنگامی که اسکریپت می‌نویسید یا API‌ها را یکپارچه می‌کنید.

JavaScript
async function sha256Hex(data) {
  const bytes = typeof data === "string"
    ? new TextEncoder().encode(data)
    : new Uint8Array(data);
  const digest = await crypto.subtle.digest("SHA-256", bytes);
  return [...new Uint8Array(digest)]
    .map((b) => b.toString(16).padStart(2, "0"))
    .join("");
}

// Text
console.log(await sha256Hex("hello"));

// Files: digest accepts an ArrayBuffer directly
const buf = await file.arrayBuffer();
console.log(await sha256Hex(buf));

Web Crypto بومی مرورگر فقط از خانواده SHA پشتیبانی می‌کند و به HTTPS یا localhost نیاز دارد؛ MD5 نیاز به کتابخانه شخص ثالث دارد.

PHP
echo hash('sha256', 'hello');        // 64 hex characters
echo md5('hello');                   // same as hash('md5', 'hello')

// Streamed: hashes the file without loading it into memory
echo hash_file('sha256', 'setup.exe');

hash() و hash_file() از md5، sha1، sha256، sha512 و بیشتر پشتیبانی می‌کنند؛ هش فایل به صورت جریانی انجام می‌شود، بنابراین از حافظه کمی استفاده می‌کند.

Python
import hashlib

print(hashlib.sha256(b"hello").hexdigest())
print(hashlib.md5(b"hello").hexdigest())

# Large files: streamed, low memory (Python 3.11+)
with open("setup.exe", "rb") as f:
    print(hashlib.file_digest(f, "sha256").hexdigest())

کتابخانه استاندارد hashlib نیازی به نصب ندارد؛ برای هش‌های جریانی فایل‌های بزرگ (Python 3.11+) از file_digest() استفاده کنید.

Rust
use sha2::{Digest, Sha256};
use md5::Md5;

// Text
println!("{:x}", Sha256::digest(b"hello"));
println!("{:x}", Md5::digest(b"hello"));

// Large files: streamed, low memory
let mut file = std::fs::File::open("setup.exe")?;
let mut hasher = Sha256::new();
std::io::copy(&mut file, &mut hasher)?;
println!("{:x}", hasher.finalize());

هش در کتابخانه استاندارد نیست؛ در Cargo.toml، کرات‌های RustCrypto sha2 و md-5 را اضافه کنید. با ویژگی std فعال، io::copy فایل‌ها را به hasher جریانی می‌کند.

پرسش‌های متداول

آیا متن و فایل‌های من آپلود شده‌اند؟

خیر. همه چیز در مرورگر شما محاسبه می‌شود: فراخوانی‌های خانواده SHA از API داخلی Web Crypto استفاده می‌کنند و MD5 در جاوا اسکریپت صفحه اجرا می‌شود. این ابزار با قطع شبکه نیز کار می‌کند — آن را با یک فایل حساس امتحان کنید.

چرا متن خالی هنوز یک هش دارد؟

الگوریتم‌های هش، خروجی ثابت منحصربه‌فردی حتی برای صفر بایت تعریف می‌کنند. MD5 رشته خالی d41d8cd98f00b204e9800998ecf8427e است و SHA-256 آن با e3b0c442 شروع می‌شود. این ابزار به سادگی نتایج را وقتی ورودی خالی است پنهان می‌کند تا به اشتباه آن‌ها را کپی نکنید.

آیا می‌تواند فایل‌های با هر اندازه‌ای را هش کند؟

بستگی به حافظه موجود مرورگر دارد — نصب‌کننده‌ها و تصاویر دیسک با چند صد مگابایت معمولاً مشکلی ندارند. فایل‌ها در یک بار خوانده می‌شوند، پس برای فایل‌های چند گیگابایتی بهتر است از ابزارهای خط فرمان (sha256sum, certutil) استفاده کنید.

چرا هش‌ها طول‌های متفاوتی دارند؟

طول توسط الگوریتم تعیین می‌شود: MD5 ۳۲ کاراکتر هگز، SHA-1 ۴۰، SHA-256 ۶۴ و SHA-512 ۱۲۸ است. دو کاراکتر هگز در هر بایت — و طول مستقل از اندازه ورودی است: یک فایل یک بایتی و یک فایل چند گیگابایتی هر دو با SHA-256 ۶۴ کاراکتر تولید می‌کنند.

آیا می‌توانم از آن برای ساخت امضاهای API استفاده کنم؟

بله. بسیاری از پلتفرم‌های آزاد درخواست‌ها را با هش کردن «پارامترها + راز» با MD5 یا SHA-256 امضا می‌کنند. این ابزار برای بررسی مقدار امضا هنگام اشکال‌زنی عالی است؛ در محیط تولید، هش‌ها را در کتابخانه زبان سمت سرور خود محاسبه کنید و هرگز راز را در کد فرانت‌اند تعبیه نکنید.

چگونه با این ابزار یک مجموع کنترل (checksum) را مقایسه کنم؟

به تب «مجموع کنترل فایل» بروید، فایل را رها کنید و مجموع کنترل از سایت رسمی را در کادر بالای نتایج جای‌گذاری کنید. ابزار به طور خودکار الگوریتم را بر اساس طول تشخیص می‌دهد (۳۲ کاراکتر MD5، ۴۰ SHA-1، ۶۴ SHA-256، ۹۶ SHA-384، ۱۲۸ SHA-512): ردیف مطابق با «تأیید شده» سبز می‌شود وقتی موافق باشند و قرمز وقتی نباشند. حالت حروف، فضاهای اطراف و شکستن خطوط به طور خودکار نادیده گرفته می‌شوند.

ابزارهای مرتبط

سایر ابزارهای رمزنگاری، رمزگذاری و رمز عبور.