تولیدکننده هش
هش 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 هم هش رمز عبور میسازد و بررسی میکند. همه محاسبات داخل مرورگر شما انجام میشود، پس حتی یک فایل حجیم هم روی دستگاه خودتان میماند.
هش یک اثر انگشت با طول ثابت از داده شماست. کافی است یک کاراکتر — حتی یک فاصله در انتها — تغییر کند تا خروجی بهکلی عوض شود. همین ویژگی است که هش را برای بررسی سلامت فایل دانلودی، پیدا کردن دادههای تکراری، ساخت کلید کش و مقایسه دو نسخه از یک سند بدون خواندن هیچکدام مفید میکند.
تابع هش چیست
یک تابع هش رمزنگاری ورودی با هر طولی را میگیرد و تعداد ثابتی بیت برمیگرداند: ۱۲۸ بیت برای MD5، ۱۶۰ بیت برای SHA-1، ۲۵۶ بیت برای SHA-256 و ۵۱۲ بیت برای SHA-512 که معمولاً به شکل هگزادسیمال نمایش داده میشوند. یک ورودی همیشه همان خروجی را میدهد، در الگوریتمهای قوی دو ورودی متفاوت عملاً هرگز به یک خروجی نمیرسند، و مسیر این تبدیل برگشتپذیر نیست. همین نکته آخر بیشترین سوءبرداشت را ایجاد میکند.
کدام الگوریتم هش را انتخاب کنیم
| الگوریتم | طول خروجی | وضعیت امروز |
|---|---|---|
| MD5 | ۳۲ کاراکتر هگز | از نظر امنیتی شکسته شده است. برای کاربردهای بیخطر مثل کلید کش، ETag و حذف داده تکراری هنوز مناسب است. |
| SHA-1 | ۴۰ کاراکتر هگز | منسوخ شده. تصادم آن اثبات شده است؛ هنوز در آبجکتهای قدیمی Git و گواهیهای قدیمی دیده میشود. |
| SHA-256 | ۶۴ کاراکتر هگز | استاندارد امروز: چکسام فایل، امضا، بلاکچین و امضای درخواستهای API. |
| SHA-512 | ۱۲۸ کاراکتر هگز | همخانواده SHA-256 با خروجی بلندتر و اغلب سریعتر روی سختافزار ۶۴ بیتی. |
روش ساخت هش بهصورت آنلاین
- برای متن تایپشده زبانه متن، برای فایل زبانه فایل و برای هش رمز عبور زبانه bcrypt را انتخاب کنید.
- متن خود را بچسبانید یا فایل را روی کادر بارگذاری بکشید؛ فایل بهمحض انتخاب شدن هش میشود.
- روی ساخت هشها بزنید تا همه مقادیر یکجا محاسبه شوند.
- هش مورد نظر را با دکمه کنار آن کپی کنید.
- برای بررسی یک فایل دانلودی، مقدار منتشرشده را در کادر بررسی با چکسام منتشرشده بچسبانید تا ابزار بگوید با کدام الگوریتم مطابقت دارد.
روش بررسی چکسام 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-256 | MD5 |
|---|---|---|
| Windows (Command Prompt) | certutil -hashfile file.iso SHA256 | certutil -hashfile file.iso MD5 |
| Windows (PowerShell) | Get-FileHash file.iso -Algorithm SHA256 | Get-FileHash file.iso -Algorithm MD5 |
| Linux | sha256sum file.iso | md5sum file.iso |
| macOS | shasum -a 256 file.iso | md5 file.iso |
| Python | hashlib.sha256(data).hexdigest() | hashlib.md5(data).hexdigest() |
| Node.js | crypto.createHash('sha256').update(data).digest('hex') | همان با 'md5' |
| PHP | hash('sha256', $s) یا hash_file('sha256', $path) | md5($s)، md5_file($path) |
نتیجه همهجا یکسان است: هش فقط به بایتها وابسته است، نه به ابزاری که آن را محاسبه کرده. به همین دلیل میتوانید فایل دانلودی را همینجا با مقداری مقایسه کنید که ناشر روی دستگاهی کاملاً متفاوت تولید کرده است.
ابزارهای مرتبط
اثر انگشت داده معمولاً تنها به کار نمیآید. داده باینری را با کدگذار Base64 آماده کنید، توکن امضاشده را با رمزگشای JWT بررسی کنید، شناسه یکتا را با سازنده UUID بسازید و رمزهای قوی را با سازنده رمز عبور تولید کنید.