فهرست مطالب
ساخت هش با این ابزار برای متن و فایل، هر دو، ممکن است. متن را در کادر بنویسید تا پنج هش آن، یعنی MD5، SHA-1، SHA-256، SHA-384 و SHA-512، همزمان با تایپ نمایش داده شوند. یا فایلی را روی کادر بکشید تا هشهای همان فایل محاسبه شود. اگر هشی را از جایی دارید، مثلا از سایت سازندهٔ یک نرمافزار، آن را در کادر مقایسه بچسبانید تا ابزار بگوید با کدام یک از هشها مطابقت دارد و فایل سالم است یا نه. گزینهٔ حروف بزرگ، هشها را با حروف بزرگ هگزادسیمال نشان میدهد، برای وقتی که هش مرجع اینطور نوشته شده. همهٔ محاسبهها در مرورگر شما انجام میشود و فایل و متن جایی فرستاده نمیشوند.
راهنمای استفاده از ساخت هش (MD5 و SHA)
- متن را در کادر وارد کنید یا فایل را روی کادر فایل بکشید.
- همهٔ هشها همزمان محاسبه میشوند.
- برای بررسی فایل، هش اعلامشده توسط ناشر را در کادر «مقایسه» وارد کنید.
هش چیست؟
هش، یا چکیده، اثر انگشت داده است. تابع هش هر دادهای را، از یک حرف تا فیلمی چندگیگابایتی، میگیرد و عددی با طول ثابت تحویل میدهد که معمولا به شکل رشتهای از رقمها و حروف انگلیسی نوشته میشود. این تابع چند ویژگی دارد که کاربردهایش را میسازد. قطعی است؛ دادهٔ یکسان همیشه هش یکسان میدهد. یکطرفه است؛ از هش نمیشود به داده رسید. و حساس است؛ کوچکترین تغییر در داده، حتی یک بیت، هش را کاملا و غیرقابل پیشبینی عوض میکند.
برای اینکه این حساسیت را ببینید، متن پیشفرض ابزار، یعنی ابزار جیبی، را در نظر بگیرید. هش MD5 آن با a4225fea شروع میشود. حالا یک نقطه به آخر متن اضافه کنید؛ هش با 1528bd45 شروع میشود و هیچ شباهتی به قبلی ندارد. به این ویژگی اثر بهمنی میگویند و همان چیزی است که هش را برای تشخیص تغییر مفید میکند. اگر حتی یک حرف از قرارداد یا یک بایت از فایل نصبی تغییر کند، هش کاملا متفاوت میشود.
ساخت هش؛ پنج الگوریتم ابزار

MD5 قدیمیترین الگوریتم ابزار است که در دههٔ نود میلادی طراحی شد و خروجی ۱۲۸ بیتی، یعنی ۳۲ نویسهٔ هگزادسیمال، دارد. SHA-1 کمی بعد آمد با خروجی ۱۶۰ بیتی. هر دو سالها استاندارد بودند، اما امروز شکستهاند. سه الگوریتم دیگر، SHA-256، SHA-384 و SHA-512، از خانوادهٔ SHA-2 هستند که مؤسسهٔ ملی استاندارد و فناوری آمریکا منتشر کرده و امروز امن شمرده میشوند. عدد در نام هر کدام، طول خروجی به بیت است.
| الگوریتم | طول خروجی | هش متن خالی؛ آغاز آن |
|---|---|---|
| MD5 | ۳۲ نویسه | d41d8cd9… |
| SHA-1 | ۴۰ نویسه | da39a3ee… |
| SHA-256 | ۶۴ نویسه | e3b0c442… |
| SHA-384 | ۹۶ نویسه | 38b060a7… |
| SHA-512 | ۱۲۸ نویسه | cf83e135… |
جدول بالا هش متن کاملا خالی را با هر الگوریتم نشان میدهد. این هشها برای برنامهنویسان آشنایند؛ اگر هش فایلی را حساب کردید و یکی از اینها را دیدید، یعنی فایل خالی بوده یا اصلا خوانده نشده است. ابزار SHA-1 و خانوادهٔ SHA-2 را با رابط رمزنگاری خود مرورگر حساب میکند و MD5 را، که مرورگرها به دلیل ناامنی پشتیبانی نمیکنند، با پیادهسازی جداگانه.
MD5 و SHA-1 چرا شکستهاند؟
یک تابع هش امن باید یک ویژگی دیگر هم داشته باشد؛ پیدا کردن دو دادهٔ متفاوت با هش یکسان، که به آن برخورد میگویند، باید عملا ناممکن باشد. چون تعداد دادههای ممکن بینهایت و تعداد هشها محدود است، برخورد حتما وجود دارد؛ اما پیدا کردنش باید آنقدر سخت باشد که هیچ رایانهای نتواند. پژوهشگران در میانهٔ دههٔ دوهزار میلادی روشهایی برای ساختن برخورد در MD5 پیدا کردند که امروز روی رایانهٔ معمولی در چند ثانیه اجرا میشود. برای SHA-1 هم در سال ۲۰۱۷ نخستین برخورد عملی منتشر شد.
معنای عملیاش این است که مهاجم میتواند دو فایل متفاوت بسازد، یکی سالم و یکی آلوده، که هش MD5 یکسان دارند. اگر شما سلامت فایل را فقط با MD5 بسنجید، ممکن است فایل آلوده را سالم بدانید. برای همین، برای هر کار امنیتی، از امضای دیجیتال تا بررسی اصالت فایل، از SHA-256 یا بالاتر استفاده کنید. MD5 فقط برای تشخیص خرابی تصادفی، مثلا قطع شدن دانلود یا خرابی دیسک، هنوز مفید است؛ چون خرابی تصادفی هیچوقت عمدا برخورد نمیسازد.
بررسی سلامت فایل دانلودشده

رایجترین کاربرد عملی هش برای کاربران عادی، بررسی فایلهای دانلودشده است. بسیاری از سازندگان نرمافزار، بهویژه سیستمعاملها و نرمافزارهای متنباز، کنار لینک دانلود، هش SHA-256 فایل را هم مینویسند. اگر فایلی را از آینهای دیگر یا با اینترنتی ناپایدار دانلود کردهاید، میتوانید هش آن را حساب کنید و با هش اعلامشده مقایسه کنید. اگر یکی بودند، فایل دقیقا همان است که سازنده منتشر کرده؛ نه دانلود ناقص است و نه کسی در مسیر آن را دستکاری کرده.
در ابزار، فایل را روی کادر بکشید و هش اعلامشده را در کادر مقایسه بچسبانید. ابزار هش را با هر پنج الگوریتم مقایسه میکند و اگر با یکی مطابقت داشت، نام الگوریتم را میگوید؛ لازم نیست بدانید سازنده کدام الگوریتم را استفاده کرده. بزرگی و کوچکی حروف هش هم در مقایسه مهم نیست. یک نکتهٔ مهم؛ هش اعلامشده را فقط از سایت رسمی سازنده بردارید. اگر کسی فایل آلودهای را در سایتی جعلی گذاشته، هش همان فایل آلوده را هم کنارش مینویسد و مقایسه چیزی را ثابت نمیکند.
هش فایلهای بزرگ
فایل در مرورگر شما خوانده میشود و به هیچ سروری فرستاده نمیشود؛ پس حتی برای فایلهای محرمانه میتوانید از ابزار استفاده کنید. ابزار کل فایل را در حافظهٔ مرورگر بارگذاری میکند تا هش را حساب کند. برای فایلهای تا چند صد مگابایت این سریع است. برای فایلهای چندگیگابایتی، مثل فایل نصب سیستمعامل، ممکن است مرورگر کند شود یا حافظه کم بیاورد. برای این فایلها، ابزارهای خط فرمان سیستمعامل مناسبترند؛ ویندوز و مک و لینوکس همه دستوری داخلی برای محاسبهٔ هش فایل دارند.
نمونه؛ فایل نصب یک نرمافزار
فرض کنید نرمافزاری متنباز را، چون سایت اصلی کند بود، از یک سایت آینهٔ داخلی دانلود کردهاید. در صفحهٔ دانلود سایت رسمی سازنده، کنار نام فایل، هشی شصتوچهارنویسهای با عنوان SHA-256 نوشته شده. آن را کپی کنید. فایل دانلودشده را روی کادر ابزار بکشید و هش را در کادر مقایسه بچسبانید. اگر پیام مطابقت با SHA-256 ظاهر شد، فایل آینه دقیقا همان فایل سازنده است و میتوانید با خیال راحت نصبش کنید.
اگر پیام عدم مطابقت آمد، دو احتمال دارد. یا دانلود ناقص یا خراب بوده که با دانلود دوباره حل میشود؛ حجم فایل را هم با حجم اعلامشده مقایسه کنید. یا فایل آینه با فایل اصلی فرق دارد، که ممکن است نسخهٔ متفاوت یا بدتر از آن، فایلی دستکاریشده باشد. در این حالت فایل را نصب نکنید و آن را از سایت رسمی دانلود کنید. این بررسی یک دقیقه وقت میگیرد و از یکی از رایجترین راههای آلوده شدن رایانه، یعنی نصب نرمافزار دستکاریشده، جلوگیری میکند.
هش با خط فرمان
برای فایلهای خیلی بزرگ یا وقتی هش دهها فایل را میخواهید، خط فرمان سیستمعامل سریعتر است. در ویندوز، ابزار داخلی مدیریت گواهیها دستوری برای هش فایل دارد که نام الگوریتم را میگیرد و پاورشل هم فرمانی مخصوص هش فایل دارد. در مک، فرمانی داخلی برای خانوادهٔ SHA وجود دارد که با گزینهای طول الگوریتم را تعیین میکند و در لینوکس، برای هر الگوریتم فرمانی جداگانه با نام همان الگوریتم هست. خروجی همهٔ اینها با خروجی این ابزار یکی است، چون الگوریتمها استانداردند.
اگر نتیجهٔ خط فرمان با ابزار فرق کرد، مطمئن شوید فایل یکسان را بررسی میکنید و الگوریتم یکسانی انتخاب کردهاید. برای متن، فرق رایج خط تازه است؛ وقتی متنی را در خط فرمان با دستور چاپ به برنامهٔ هش میدهید، دستور چاپ معمولا یک خط تازه به انتها اضافه میکند و هش عوض میشود.
مقایسهٔ دو فایل بدون باز کردن
گاهی دو فایل با نامهای متفاوت دارید و میخواهید بدانید محتوایشان دقیقا یکی است یا نه؛ مثلا دو نسخه از یک سند، یا عکسی که دو بار ذخیره شده. به جای باز کردن و مقایسهٔ چشمی، هش هر دو را حساب کنید. اگر هشها یکسان بودند، فایلها بایتبهبایت یکیاند. اگر متفاوت بودند، حتی اگر ظاهرشان یکی باشد، چیزی در آنها فرق دارد؛ شاید اطلاعات پنهان عکس یا تاریخ ذخیره در سند. برای دیدن اینکه متن دو سند دقیقا کجا فرق دارد، مقایسه متن را ببینید.
هش متن و نکتهٔ کدگذاری
وقتی هش یک متن را حساب میکنید، در واقع هش بایتهای آن متن حساب میشود و این بایتها به کدگذاری بستگی دارند. ابزار متن را با کدگذاری UTF-8 که استاندارد وب است به بایت تبدیل میکند. اگر هش همان متن را در برنامهٔ دیگری با کدگذاری متفاوت حساب کنید، نتیجه فرق میکند. برای متنهای فارسی این نکته مهم است؛ ی و ک عربی و فارسی، نیمفاصله و فاصله، و حتی خط تازه در انتهای متن، همه بایتهای متفاوتی میسازند و هش را عوض میکنند.
برای همین، اگر هش متنی را با هشی که کس دیگری حساب کرده مقایسه میکنید و یکی نیستند، پیش از نتیجهگیری، مطمئن شوید متن دقیقا یکسان است؛ فاصلهای در انتها یا خط تازهای در پایان، شایعترین دلیل اختلاف است. برنامهنویسانی که هش رشتهها را در کد حساب میکنند، اغلب با همین مشکل روبهرو میشوند که برنامه، خط تازهٔ انتهای فایل را هم جزو متن حساب کرده است.
هش و رمز عبور
سایتها و برنامهها نباید رمز عبور کاربران را به شکل خام ذخیره کنند. به جایش، هش رمز را نگه میدارند و هنگام ورود، هش رمز واردشده را با هش ذخیرهشده مقایسه میکنند. اینطور، اگر پایگاه داده دزدیده شود، مهاجم رمزها را مستقیم ندارد. اما هشهای ساده و سریع مثل MD5 یا حتی SHA-256 برای این کار مناسب نیستند. چون سریعاند، مهاجم میتواند میلیاردها رمز احتمالی را در ثانیه هش کند و با هشهای دزدیدهشده مقایسه کند. فهرستهای بزرگی از هش MD5 رمزهای رایج هم آماده در اینترنت وجود دارد.
روش درست، استفاده از تابعهایی است که عمدا کند و پرهزینه طراحی شدهاند، مثل bcrypt، scrypt، Argon2 یا PBKDF2 با تکرار زیاد، همراه با نمک؛ عددی تصادفی و جداگانه برای هر کاربر که پیش از هش به رمز اضافه میشود تا رمزهای یکسان، هش یکسان نداشته باشند. اگر برنامهنویس هستید و رمز کاربران را با هش ساده ذخیره میکنید، تغییرش در اولویت است. این ابزار برای آموزش و بررسی است، نه ساختن هش برای ذخیرهٔ رمز. برای ساختن رمزهای قوی، ساخت پسورد را ببینید.
کاربردهای دیگر هش
هش در جاهای زیادی به کار میرود که شاید از آنها خبر نداشته باشید. سیستمهای کنترل نسخه، مثل گیت، هر تغییر کد را با هش آن شناسایی میکنند. سرویسهای ذخیرهسازی ابری با مقایسهٔ هش فایلها، فایلهای تکراری را تشخیص میدهند و فقط یک نسخه نگه میدارند. امضای دیجیتال، که در قراردادهای الکترونیکی و نرمافزارها کاربرد دارد، در واقع هش سند را امضا میکند. زنجیرهٔ بلوک در رمزارزها هم بر پایهٔ هش ساخته شده است.
برای کاربر عادی، جز بررسی فایلها، کاربرد دیگرش نگهداری اثبات است. اگر میخواهید ثابت کنید سندی را در تاریخ مشخصی داشتهاید، بدون اینکه محتوایش را فاش کنید، هش آن را جایی عمومی با تاریخ ثبت کنید؛ بعدا با نشان دادن سند، هر کسی میتواند هش را دوباره حساب کند و ببیند یکی است.
خطاهای رایج
خطای اول، استفاده از MD5 یا SHA-1 برای کارهای امنیتی است. خطای دوم، اشتباه گرفتن هش با رمزنگاری است؛ هش برگشتپذیر نیست و اگر میخواهید متنی را پنهان کنید و بعد بخوانید، رمزنگاری متن لازم دارید. خطای سوم، انتظار اینکه هش را بشود رمزگشایی کرد؛ سایتهایی که ادعای رمزگشایی MD5 دارند، در واقع فهرستی از هش رمزهای رایج دارند و فقط وقتی جواب میدهند که متن اصلی ساده و رایج بوده. خطای چهارم، مقایسهٔ هش با الگوریتمهای متفاوت است که هیچوقت یکی نمیشوند.
کدام الگوریتم را انتخاب کنیم؟
اگر هش را برای مقایسه با هشی اعلامشده حساب میکنید، همان الگوریتمی را بخوانید که سازنده اعلام کرده؛ ابزار هر پنج را با هم حساب میکند و لازم نیست انتخاب کنید. اگر خودتان میخواهید برای فایل یا سندی هش ثبت کنید، SHA-256 را انتخاب کنید؛ امن است، همهجا پشتیبانی میشود و طولش برای ثبت و مقایسه معقول است. SHA-512 را وقتی بخواهید که سامانه یا استانداردی صریحا آن را خواسته. MD5 و SHA-1 را فقط برای سازگاری با سامانههای قدیمی یا تشخیص خرابی تصادفی به کار ببرید. هر هشی که ثبت میکنید، نام الگوریتمش را هم کنارش بنویسید؛ هش بدون نام الگوریتم، چند سال بعد برای کسی که میخواهد آن را بررسی کند، معمایی بیپاسخ است. تاریخ محاسبه و نام فایل را هم کنارش یادداشت کنید تا بعدا بدانید هش دقیقا مال کدام نسخه است.
ابزارهای مرتبط
برای تبدیل داده به متن قابل انتقال، تبدیل Base64 را ببینید و برای دیدن نمایش دودویی متن، تبدیل متن به باینری. همهٔ ابزارهای برنامهنویسی در ابزارهای برنامهنویسی آمدهاند.
آخرین بازبینی محتوا: · تیم تحریریه ابزار جیبی