free-plan
چهارشنبه 13 تیر 1403 | کاربران آنلاين : 15

کد هش (Hash Code#) چیست و چه کاربردی دارد؟

آخرین مطالب:
بخش: کامپیوتر و اینترنت - آموزش و ترفند ،کامپیوتر -
کد هش (Hash Code#) چیست و چه کاربردی دارد؟

Hash چیست؟

هش که گاهی اوقات به آن اثر انگشت هم گفته می‌شود، فرایندی است که یک داده با حجم زیاد را به یک مقدار کوتاه با طول ثابت تبدیل می‌کند. یعنی اگر شما فایلی با حجم 100 مگابایت به این الگوریتم بدهید، به شما یک کد 32 رقمی تحویل می‌دهد. حتی اگر یک داده بسیار کوتاه مثل «Hello» را هم به آن بدهید، باز یک کد 32 رقمی تحویل خواهد داد.

به طور خیلی ساده، این الگوریتم بیت‌های خاصی از داده را انتخاب می‌کند و طی یک سری عملیات ریاضی یک کد مختص آن داده به دست می‌آورد. (البته این الگوریتم‌ها پیچیده‌تر از آن هستند که تصور می‌کنید، اما به بیان ساده همین کار را می‌کنند)

 

چند نکته:

- کدی که تحویل داده می‌شود، مثل یک اثر انگشت برای آن فایل یا داده است!

یعنی هیچ فایل یا داده دیگری این کد را به دست نخواهد آورد. پس فکر می‌کنم مشخص شد که آن کدی که سایت‌ها در کنار فایل دانلودی می‌نویسند به چه درد می‌خورد؟
شما یک فایل حجیم دانلود می‌کنید و احتمالاً با پیغام خطا مواجه می‌شوید. می‌خواهید ببینید که این خطا به خاطر ناقص دانلود شدن آن فایل است و یا اینکه فایل سالم است و ویندوز اجازه نصب نمی‌دهد؟ کافی‌ست شما هم فایلی که دانلود کرده‌اید را هش کنید و ببینید آیا کدی که به دست می‌آید همان کدی است که سایت سازنده ارائه کرده است؟ اگر یکی بود که فایل به درستی دانلود شده وگرنه، باید فایل را مجدداً دانلود کنید!
و یا اینکه می‌خواهید بدانید که فایلی که برای دانلود گذاشته شده، همان فایلی است که شما دارید؟ (مثلاً بارها شده من یک فایل را از چندین سایت دانلود کرده‌ام و متوجه شده‌ام که همانی است که در سایت قبلی بوده. اگر همه یک کد MD5 از فایل اصلی ارائه می‌کردند، من با فایلی که داشتم مقایسه می‌کردم و اگر یکی می‌بود، مجدداً دانلود نمی‌کردم!

 

پیشنهادی به سایت‌های دانلودی:

می‌خواهم همین‌جا از فرصت استفاده کنم و از همه افرادی که فایلی را (به خصوص فایل‌های حجیم را) برای دانلود می‌گذارند، بخواهم که لطف کنند و یک کد MD5 از آن در کنار فایل قرار دهند تا کاربر در مواقعی که پیغام خطا می‌بیند، به دانلود خود شک نکند تا مجبور نباشد چندین بار آن فایل را دانلود کند و در نهایت متوجه شود که اصلاً فایل کلاً از ابتدا ایراد داشته!!

مثلاً اگر قرار است فایل firefox.exe را برای دانلود بگذارید، از آن فایل یک MD5 تهیه کنید و زیر آن بگذارید. این کار، چند ثانیه بیشتر طول نخواهد کشید!

اگر این فرهنگ جا بیفتد، چقدر صرفه‌جویی در ترافیک مصرفی و پهنای باند سایت شما و همینطور ترافیک مصرفی کاربر خواهد شد!
ضمن اینکه اگر فایلی از طرف شما به عنوان مدیر سایت، به درستی آپلود نشده باشد اگر یک کاربر مطمئن باشد که به درستی دانلود کرده و کد MD5 را به شما ارائه کند، شما با کد MD5 فایلی که روی سیستم خودتان است مقایسه می‌کنید و اگر مشابه نبود، این یعنی اینکه فایل به درستی آپلود نشده!

در زیر لینک دانلود، کد MD5 را قرار دهید و از طرفی یک لینک هم به یک مقاله بدهید با این عنوان «کد MD5 چیست؟» تا کاربر پس از مطالعه بداند که چطور صحت فایل را بررسی کند.

(ما در آفتابگردان سعی خواهیم کرد از این پس، این کار را برای تمام فایل‌هایی که برای دانلود خواهیم گذاشت انجام دهیم)

 

- کد هش، برگشت‌پذیر نیست!

این طبیعی‌ست که از کد هش نمی‌توان عبارت اصلی را استخراج کرد. یعنی شما نمی‌توانید از آن 32 رقم، کل آن 100 مگابایت داده را به دست آورید!
در اصطلاح گفته می‌شود: الگوریتم هش نباید معکوس‌پذیر باشد!

 

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

شاید مهم‌ترین کاربرد الگوریتم‌های هش، هش کردن پسورد کاربران باشد.
تصور کنید در یک سایت ثبت نام می‌کنید. به آن اعتماد می‌کنید و پسوردی که برای ایمیل خود (و یا جاهای دیگر) وارد کرده‌اید را اینجا نیز وارد می‌کنید! اگر یک روز این سایت هک شود و یا اینکه مدیر سایت خیانت کند و به پسوردها نگاه کند، پسورد شما به راحتی لو رفته است! و ایمیل و خیلی حساب‌های دیگر شما به خطر می‌افتد. (همیشه پسورد ایمیل خود را نسبت به پسوردی که در جاهای دیگر به کار می‌برید، متفاوت انتخاب کنید)
این مشکلی است که پیش از کشف الگوریتم‌های هش وجود داشت.
اما اگر سایتی امن باشد، پسورد کاربر را هنگام ثبت نام، به صورت هش شده در دیتابیس خود نگاه می‌دارد و هنگامی هم که می‌خواهید لاگین کنید، پسورد شما را هش می‌کند و این دو عبارت هش شده را با هم مقایسه می‌کند اگر درست بود، پسورد را درست وارد کرده‌اید.
اگر آن سایت پسورد را به صورت هش‌شده ذخیره کند، با توجه به اینکه گفتیم که الگوریتم‌های هش، برگشت‌پذیر نیستند، هیچ کس نمی‌تواند بفهمد پسورد اصلی شما چه بوده

 

- اگر سایتی توانست بگوید پسورد شما چه بوده، هرگز امن نیست!

برای اینکه یک سایت را از لحاظ امنیتی تست کنید، فرض کنید پسوردتان را فراموش کرده‌اید. سایت‌ها معمولاً بخشی دارند به نام «پسوردم را فراموش کرده‌ام» به آنجا بروید و سعی کنید پسوردتان را بازیابی کنید. اگر آن سایت بتواند بگوید پسورد شما چه بوده (مثلاً بتواند پسورد را به ایمیل شما بفرستد) هرگز به آن سایت اعتماد نکنید! مشخص می‌شود که ناشی‌ترین برنامه‌نویس را داشته است.

سایت‌ها باید بتوانند پسورد شما را ریست کنند (یعنی بعد از اینکه مطمئن شدند شما صاحب این اکانت هستید، اجازه دهند که پسورد جدیدی انتخاب کنید) نه اینکه بگویند پسوردتان چه بوده!

 

- یعنی پسوردی که هش شد، هرگز توسط هکرها کشف نخواهد شد؟

در حالت کلی خیر، اما اگر پسورد شما یک پسورد روتین باشد، می‌توان آن‌را به راحتی فهمید!!
مثلاً یکی از راه‌ها این است که هکرها یک لیست از پرکاربردترین پسوردها پیدا می‌کنند (مثل 123456 یا 4321 و غیره) آن‌ها را هش می‌کنند تا کد هش شده‌اش به دست آید. حالا بررسی می‌کنند که کد هش شده‌ی پسورد شما برابر با کدامیک از این پسوردهای هش شده است!؟ به همین راحتی پسورد شما را کشف می‌کنند!
این لیست آنقدر بزرگ است که احتمال اینکه پسورد شما یکی از آن‌ها باشد زیاد است!
پس اینکه همه و بارها گفته‌اند که پسوردی انتخاب کنید که روتین نباشد و هیچ شخص دیگری استفاده نکرده باشد به همین خاطر است.



ارسال شده درتاريخ: 1399/10/09 | نويسنده: admin | نظرات (0)
برچسب ها : ، ، ،

نظرات این مطلب

کد امنیتی رفرش

پربازدیدترین مطالب:
مروری بر مطالب گذشته:
خبرنامه
براي اطلاع از آپيدت شدن سایت در خبرنامه سایت عضو شويد تا جديدترين مطالب به ايميل شما ارسال شود