RevealTheme logo

مولد هش (MD5 / SHA)

هش‌های رمزنگاری تولید کنید: MD5، SHA-1، SHA-256، SHA-384 و SHA-512. در مرورگر شما از طریق Web Crypto API اجرا می‌شود.

نحوه استفاده از این ابزار

  1. 1

    Type or paste the text you want to hash into the input box.

  2. 2

    Click Generate to compute the digests.

  3. 3

    Read the SHA-1, SHA-256, SHA-384, and SHA-512 results, each shown as a lowercase hexadecimal string.

  4. 4

    Select a hash and copy it for use as a checksum, cache key, or content identifier.

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

یک تابع هش رمزنگاری الگوریتمی قطعی است که هر ورودی (چند بایت، یک فایل چندگیگابایتی یا کل ویکی‌پدیای انگلیسی) را به خروجی‌ای با اندازه ثابت تبدیل می‌کند که «چکیده» (digest) یا «هش» نامیده می‌شود. SHA-256 معادل ۲۵۶ بیت (۶۴ کاراکتر هگزادسیمال) تولید می‌کند؛ SHA-512 معادل ۵۱۲ بیت تولید می‌کند؛ MD5 معادل ۱۲۸ بیت تولید می‌کند. چهار ویژگی یک هش «رمزنگاری» را در برابر هش غیررمزنگاری (مانند CRC32) تعریف می‌کنند: قطعی بودن (ورودی یکسان ← هش یکسان، همیشه)، اثر بهمنی (تغییر تنها یک بیت تقریباً نیمی از بیت‌های خروجی را تغییر می‌دهد)، مقاومت در برابر پیش‌تصویر (نمی‌توانید هش را معکوس کنید تا ورودی را بازیابی کنید) و مقاومت در برابر برخورد (نمی‌توانید دو ورودی پیدا کنید که هش یکسانی تولید کنند). وقتی یک تابع هش شکسته می‌شود، معمولاً این دو ویژگی آخر از بین می‌روند: حملات برخورد علیه MD5 (سال ۲۰۰۴) و SHA-1 (سال ۲۰۱۷) آن‌ها را برای مقاصد امنیتی نامناسب کرد، هرچند همچنان برای بررسی‌های یکپارچگی غیرخصمانه، مانند چک‌سام‌های فایل، کاربرد دارند. برای هر کار امنیتی جدید از SHA-256 یا SHA-512 استفاده کنید. این ابزار از Web Crypto API مرورگر (crypto.subtle.digest) استفاده می‌کند که روی دستگاه‌های مدرن با سخت‌افزار شتاب می‌گیرد و خروجی‌ای بایت‌به‌بایت یکسان با OpenSSL، ماژول hashlib در Python و ماژول crypto در Node تولید می‌کند.

موارد استفاده رایج

  • تأیید کنید فایل دانلودشده با مقدار SHA-256 اعلام‌شده توسط منتشرکننده مطابقت دارد (ISOهای Linux، نسخه‌های ابزارهای امنیتی).

  • یک شناسه‌ی مبتنی بر محتوا برای کلیدهای کش تولید کنید (هش محتوا ← URL پایدار).

  • یک کلید حذف تکرار برای ذخیره‌سازی فایل‌ها بسازید (تطابق هش = فایل یکسان).

  • تأیید امضای webhook را بسازید؛ HMAC-SHA256 محتوا با راز مشترک.

  • هش‌های محتوا به سبک Git تولید کنید (SHA-1 برای شناسه‌های درخت/blob).

  • یکپارچگی یک سطر پایگاه‌داده را با هش‌کردن ستون‌های کلیدی و ذخیره‌ی هش، اعتبارسنجی کنید.

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

چرا MD5 برای امنیت منسوخ شده است؟
رمزنگاران راه‌هایی برای ساختن دو ورودی متفاوت که MD5 یکسانی تولید می‌کنند یافته‌اند. هنگامی که برخوردها قابل‌یافتن باشند، MD5 دیگر در سناریوهای خصمانه یک سیگنال یکپارچگی قابل‌اعتماد نیست (کسی می‌تواند یک فایل را جایگزین کند و فایل دیگری با همان هش بسازد). برای چک‌سام‌های غیرخصمانه (آیا فایل به‌درستی دانلود شد؟)، MD5 همچنان خوب کار می‌کند؛ فقط برای امضاهای دیجیتال یا هر چیزی که تحت تأثیر یک مهاجم باشد ناامن است.
آیا می‌توان هش‌ها را معکوس کرد؟
نه مستقیماً: هش‌های رمزنگاری توابع یک‌طرفه هستند. اما: (۱) برای ورودی‌های کوتاه یا با آنتروپی پایین (گذرواژه‌ها، عبارت‌های رایج)، یک مهاجم می‌تواند هش‌های هر ورودی محتمل را از پیش محاسبه کند (جدول‌های رنگین‌کمان) و هش شما را جست‌وجو کند. به همین دلیل هش‌کردن گذرواژه از نمک‌های تصادفی یکتا استفاده می‌کند. (۲) برای ورودی‌های با طول دلخواه و آنتروپی بالا (کلیدهای تصادفی، محتوای فایل‌ها)، معکوس‌کردن از نظر محاسباتی ناممکن است.
تفاوت بین SHA-256 و HMAC-SHA256 چیست؟
SHA-256 یک هش ساده است: هر کسی که ورودی را داشته باشد می‌تواند همان هش را محاسبه کند. HMAC-SHA256 یک هش با کلید است: برای محاسبه آن به یک راز مشترک نیاز دارید. webhookها از HMAC استفاده می‌کنند زیرا راستی‌آزما می‌خواهد بداند «آیا این را کسی که راز را می‌داند ساخته است؟»، نه فقط «آیا بار داده با یک مقدار شناخته‌شده مطابقت دارد؟». برای گونه با کلید از مولد HMAC ما استفاده کنید.
چه زمانی باید به‌جای SHA-256 از SHA-512 استفاده کنم؟
SHA-512 بیت‌های خروجی بیشتری دارد (۵۱۲ در برابر ۲۵۶) که حملات برخورد را از نظر نظری دشوارتر می‌کند. اما SHA-256 پیش‌تر فراتر از هر بازه زمانی معقولی امن است (قدرت مؤثر در برابر برخورد برابر با 2^128). SHA-512 گاهی روی سخت‌افزار ۶۴ بیتی به دلیل عملیات داخلی پهن‌ترش سریع‌تر است. به‌طور پیش‌فرض از SHA-256 استفاده کنید؛ اگر دلیل مشخصی دارید از SHA-512 استفاده کنید.
چرا هش SHA من با هش یک ابزار دیگر تفاوت دارد؟
سه علت محتمل: (۱) کدگذاری ورودی متفاوت: بایت‌هایی که هش می‌شوند باید مطابقت داشته باشند. UTF-8، UTF-16 یا Latin-1 برای متن قابل‌مشاهده یکسان، هش‌های متفاوتی تولید می‌کنند. این ابزار ورودی را به‌صورت UTF-8 کدگذاری می‌کند. (۲) خط جدید پایانی: برخی ابزارها یک خط جدید اضافه می‌کنند و برخی دیگر نه. (۳) BOM (نشانگر ترتیب بایت): یک پیشوند پنهان سه‌بایتی که برخی ویرایشگرها به فایل‌های UTF-8 اضافه می‌کنند.
آیا استفاده از آن با داده‌های حساس امن است؟
بله: محاسبه هش به‌صورت محلی در مرورگر شما از طریق Web Crypto انجام می‌شود. ورودی هرگز دستگاه شما را ترک نمی‌کند. خود هش‌ها به این معنا «حساس» نیستند که ورودی را آشکار نمی‌کنند (با فرض آنتروپی کافی)، اما اگر هش داده‌های با آنتروپی پایین (مانند گذرواژه‌های بدون نمک) را محاسبه کنید، توجه داشته باشید که هر کسی که هش را ببیند می‌تواند با جدول‌های رنگین‌کمان آن را معکوس کند.

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

کدگشای JWT

توکن‌های JSON Web Token (JWT) را فوراً کدگشایی کنید. در مرورگر شما اجرا می‌شود: توکن‌ها هرگز از دستگاه شما خارج نمی‌شوند، پس استفاده از آن با اسرار محیط تولید (production) امن است.

قالب‌بند و اعتبارسنج JSON

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

قالب‌بند XML

اسناد XML را قالب‌بندی و زیبا کنید. مفید برای SOAP، نقشه‌های سایت، فیدهای RSS و فایل‌های پیکربندی.

کدگذار و کدگشای Base64

رشته‌ها را به Base64 کدگذاری یا Base64 را به متن کدگشایی کنید. به حریم خصوصی شما احترام می‌گذارد: در مرورگر شما اجرا می‌شود.

کدگذار و کدگشای URL

متن را به کدگذاری امن برای URL (کدگذاری درصدی) و برعکس تبدیل کنید. مفید برای رشته‌های پرس‌وجو، تغییر مسیرها و جریان‌های OAuth.

کدگذار و کدگشای موجودیت‌های HTML

کاراکترهای خاص را به موجودیت‌های HTML (&، < و غیره) و برعکس تبدیل می‌کند. برای جای‌دادن امن متن در HTML مفید است.