توسعه‌دهنده 🔒 در مرورگر اجرا می‌شود — داده‌ای ارسال نمی‌شود

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

هش MD5، SHA-1، SHA-256 و SHA-512 برای متن یا فایل، bcrypt و بررسی چک‌سام — در مرورگر شما.

متن ورودی

سازنده هش — محاسبه آنلاین MD5، SHA-1، SHA-256 و SHA-512

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

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

نمودار: هش SHA-256 دو ورودی «hello» و «hello.» کاملاً متفاوت است، اما طول هر دو ۶۴ کاراکتر هگز است.ورودیهش SHA-256helloSHA-2562cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824hello.SHA-2561589999b0ca6ef8814283026a9f166d51c70a910671c3d44049755f07f2eb910فقط یک کاراکتر بیشترهمیشه ۶۴ کاراکتر هگز (۲۵۶ بیت)
اضافه کردن فقط یک نقطه کل هش SHA-256 را عوض می‌کند، اما طول آن هیچ‌وقت تغییر نمی‌کند. ورودی یکسان همیشه هش یکسان می‌دهد؛ به همین دلیل چک‌سامِ منتشرشده ثابت می‌کند فایل دانلودشده سالم رسیده است.

تابع هش چیست

یک تابع هش رمزنگاری ورودی با هر طولی را می‌گیرد و تعداد ثابتی بیت برمی‌گرداند: ۱۲۸ بیت برای MD5، ۱۶۰ بیت برای SHA-1، ۲۵۶ بیت برای SHA-256 و ۵۱۲ بیت برای SHA-512 که معمولاً به شکل هگزادسیمال نمایش داده می‌شوند. یک ورودی همیشه همان خروجی را می‌دهد، در الگوریتم‌های قوی دو ورودی متفاوت عملاً هرگز به یک خروجی نمی‌رسند، و مسیر این تبدیل برگشت‌پذیر نیست. همین نکته آخر بیشترین سوءبرداشت را ایجاد می‌کند.

کدام الگوریتم هش را انتخاب کنیم

الگوریتمطول خروجیوضعیت امروز
MD5۳۲ کاراکتر هگزاز نظر امنیتی شکسته شده است. برای کاربردهای بی‌خطر مثل کلید کش، ETag و حذف داده تکراری هنوز مناسب است.
SHA-1۴۰ کاراکتر هگزمنسوخ شده. تصادم آن اثبات شده است؛ هنوز در آبجکت‌های قدیمی Git و گواهی‌های قدیمی دیده می‌شود.
SHA-256۶۴ کاراکتر هگزاستاندارد امروز: چک‌سام فایل، امضا، بلاک‌چین و امضای درخواست‌های API.
SHA-512۱۲۸ کاراکتر هگزهم‌خانواده SHA-256 با خروجی بلندتر و اغلب سریع‌تر روی سخت‌افزار ۶۴ بیتی.

روش ساخت هش به‌صورت آنلاین

  1. برای متن تایپ‌شده زبانه متن، برای فایل زبانه فایل و برای هش رمز عبور زبانه bcrypt را انتخاب کنید.
  2. متن خود را بچسبانید یا فایل را روی کادر بارگذاری بکشید؛ فایل به‌محض انتخاب شدن هش می‌شود.
  3. روی ساخت هش‌ها بزنید تا همه مقادیر یکجا محاسبه شوند.
  4. هش مورد نظر را با دکمه کنار آن کپی کنید.
  5. برای بررسی یک فایل دانلودی، مقدار منتشرشده را در کادر بررسی با چک‌سام منتشرشده بچسبانید تا ابزار بگوید با کدام الگوریتم مطابقت دارد.

روش بررسی چک‌سام MD5 یا SHA-256 یک فایل

بیشتر کسانی که سراغ ابزار هش می‌آیند دقیقاً همین را می‌خواهند. به زبانه فایل بروید و فایل نصب، آرشیو یا ISO دانلودشده را رها کنید تا هر پنج مقدار روی بایت‌های فایل — همان‌طور که روی دیسک ذخیره شده — محاسبه شود. سپس چک‌سامی را که در صفحه دانلود منتشر شده در کادر بررسی بچسبانید: یک خط سبز با نام الگوریتم یعنی فایل سالم رسیده است و نبود تطابق یعنی فایل خراب یا دستکاری شده. فایل تا ۵۰ مگابایت پشتیبانی می‌شود و خواندن آن محلی است؛ فایل هرگز آپلود نمی‌شود.

هش در عمل به چه دردی می‌خورد

  • اطمینان از اینکه فایل ISO، نصب‌کننده یا بسته انتشار بدون خرابی یا دستکاری دانلود شده است.
  • پیدا کردن رکوردها، تصاویر یا فایل‌های تکراری بدون مقایسه کل محتوا.
  • ساخت کلید کش و ETag از روی یک درخواست یا یک صفحه رندرشده.
  • امضای درخواست‌های API که در آن کلاینت و سرور هش یک داده مشترک را می‌گیرند و مقایسه می‌کنند.
  • ذخیره یک مقدار صحت در پایگاه داده تا هر تغییر بعدی قابل تشخیص باشد.
  • ساختار داخلی Git، پشتیبان‌گیری بدون تکرار و ذخیره‌سازی مبتنی بر محتوا.

هش را نمی‌توان رمزگشایی کرد

جستجوی «رمزگشایی MD5» بسیار رایج است، اما فرض آن غلط است: هش رمزنگاری نیست و هیچ کلیدی وجود ندارد که آن را برگرداند. کاری که سایت‌های به‌اصطلاح رمزگشا انجام می‌دهند صرفاً جستجوی مقدار در یک جدول عظیم از ورودی‌های رایج از پیش محاسبه‌شده است. این روش برای 123456 یا password جواب می‌دهد و برای هر چیز غیرمعمول شکست می‌خورد. اگر به تبدیلی برگشت‌پذیر نیاز دارید، سراغ رمزنگاری یا کدگذار Base64 بروید.

رمز عبور را با MD5 یا SHA-256 ذخیره نکنید

هش‌های عمومی برای سرعت طراحی شده‌اند و سرعت دقیقاً همان چیزی است که مهاجم صاحب یک پایگاه داده لو رفته می‌خواهد: سخت‌افزار امروزی میلیاردها حدس در ثانیه امتحان می‌کند. رمز عبور به الگوریتمی عمداً کند با Salt اختصاصی برای هر کاربر نیاز دارد؛ یعنی bcrypt، scrypt یا Argon2. از زبانه‌های متن و فایل برای چک‌سام و اثر انگشت استفاده کنید و ذخیره رمز عبور را به فریم‌ورک خود بسپارید.

ساخت و بررسی هش bcrypt

زبانه bcrypt برای وقتی است که باید هش رمز عبور را دستی بسازید: برای ساختن حساب مدیر اولیه، نوشتن داده آزمایشی یا فهمیدن اینکه چرا ورود کاربری شکست می‌خورد. رمز عبور را بنویسید، یک ضریب هزینه بین ۴ تا ۱۴ و یک پیشوند انتخاب کنید و روی ساخت هش‌ها بزنید. هر یک واحد افزایش هزینه، کار را دو برابر می‌کند؛ ۱۰ پیش‌فرض PHP است و ۱۲ انتخاب رایجی برای سیستم‌های تازه. $2y$ همان چیزی است که password_hash() در PHP می‌نویسد، $2b$ استاندارد امروزی در جاهای دیگر است و $2a$ برچسب قدیمی‌تر؛ هر سه یک الگوریتم را اجرا می‌کنند، پس هر کدام با کتابخانه سازگار تأیید می‌شود. هر بار یک salt تصادفی تازه انتخاب می‌شود و به همین دلیل یک رمز عبور هیچ‌وقت دو بار هش یکسان نمی‌دهد.

برای آزمودن یک رمز عبور در برابر مقدار ذخیره‌شده، هش را در کادر بررسی رمز عبور با یک هش bcrypt بچسبانید و روی بررسی بزنید. bcrypt فقط ۷۲ بایت اول رمز عبور را می‌خواند و اگر ورودی بلندتر باشد، ابزار هشدار می‌دهد. صفحه سازنده هش bcrypt مستقیم همین زبانه را باز می‌کند.

نکته‌هایی که از نتیجه گیج‌کننده جلوگیری می‌کنند

  • یک خط جدید یا فاصله در انتهای متن، هش را کاملاً عوض می‌کند. پیش از مقایسه ورودی را پاک‌سازی کنید.
  • در نمایش هگز بزرگی و کوچکی حروف اهمیتی ندارد: A3F و a3f یک مقدارند.
  • متن به‌صورت بایت‌های UTF-8 هش می‌شود، بنابراین همان کاراکترها در کدگذاری دیگر نتیجه متفاوتی می‌دهند.
  • چک‌سامی که یک پروژه منتشر می‌کند مربوط به بایت‌های فایل است نه یک فیلد متنی؛ از زبانه فایل استفاده کنید تا دقیقاً همان بایت‌ها هش شوند.
  • اگر دو ورودی متفاوت به یک خروجی برسند، یک تصادم پیدا کرده‌اید؛ همین موضوع دلیل کنار گذاشتن MD5 و SHA-1 بود.

هیچ چیزی آپلود نمی‌شود

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

گرفتن هش MD5 یا SHA-256 یک فایل در ویندوز، لینوکس و macOS

سیستمSHA-256MD5
Windows (Command Prompt)certutil -hashfile file.iso SHA256certutil -hashfile file.iso MD5
Windows (PowerShell)Get-FileHash file.iso -Algorithm SHA256Get-FileHash file.iso -Algorithm MD5
Linuxsha256sum file.isomd5sum file.iso
macOSshasum -a 256 file.isomd5 file.iso
Pythonhashlib.sha256(data).hexdigest()hashlib.md5(data).hexdigest()
Node.jscrypto.createHash('sha256').update(data).digest('hex')همان با 'md5'
PHPhash('sha256', $s) یا hash_file('sha256', $path)md5($s)، md5_file($path)

نتیجه همه‌جا یکسان است: هش فقط به بایت‌ها وابسته است، نه به ابزاری که آن را محاسبه کرده. به همین دلیل می‌توانید فایل دانلودی را همین‌جا با مقداری مقایسه کنید که ناشر روی دستگاهی کاملاً متفاوت تولید کرده است.

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

اثر انگشت داده معمولاً تنها به کار نمی‌آید. داده باینری را با کدگذار Base64 آماده کنید، توکن امضاشده را با رمزگشای JWT بررسی کنید، شناسه یکتا را با سازنده UUID بسازید و رمزهای قوی را با سازنده رمز عبور تولید کنید.

آموزش‌های مرتبط