کد هش یا Hash Code چیست؟
پس نتیجه میگیریم که تمامی فایل های دارای سایز یکسان و محتوای یکسان دارای یک کد واحد هش میباشند، که حتی در صورت تغییر نام نیز هش کد ایجاد شده تغییر نخواهد نمود، مگر آنکه محتوای آن تغییر پیدا کند. با این توضیح در مورد هش کد فکر کنم کاربردهای این کد و کلا فلسفه وجودی آن برای شما قابل درک باشد.
به عنوان مثال شما هنگامی که یک فایل اجرایی یا محصول یک شرکت را دانلود میکنید، احتمال دارد از محتوای آن اطمینان حاصل نکنید و یا نگران باشید که محتوای آن تا دریافت کامل و صحیح توسط افرادی دستکاری گردد و یا علت های دیگر. جهت اطمینان از این عدم تغییر در محتوای فایل ارائه دهندگان فایل ها و یا محصولات، بهمراه فایل ارائه شده، یک هش کد نیز اعلام میکنند. که کاربر میتواند پس از دانلود فایل مدنظر و ایجاد هش کد برای فایل دریافت شده، هش کد ایجاد شده را با هش کد ارائه شده توسط شرکت ارائه دهنده فایل اطمینان حاصل کند که محتوای فایل دانلودی به هیچ عنوان تغییری نداشته است.
اجازه دهید برای صنف هاستینگ یک مثال برای استفاده هش کد بزنیم. به عنوان مثال شما در یک شرکت هاستینگ سایت خود را میزبانی نموده اید. بعد از اتمام سایت و یا در زمان های دلخواه در صورتی که شما دسترسی به سیستم دانلود فول را نداشته باشید، میتوانید از شرکت هاستینگ خود درخواست کنید که از هاست شما فول بک آپ تهیه کنند و لینک دانلود آنرا برای شما ارسال کنند. از آنجایی که صحت فایل بک آپ گرفته شده بعد از دانلود بسیار مهم میباشد و احتمال دارد فایل هنگام دانلود قسمتی از اطلاعات را از دست بدهد و یا ناقص دانلود شود، نیاز هست که شما هش کد فایل دانلود شده را با هش کد فایل موجود در سرور مقایسه کنید تا اطمینان داشته باشید که بک آپ دانلود شده بصورت سالم میباشد. چرا که شما به هیچ عنوان در صورت عدم دسترسی به سرور امکان تست فایل های فول بک آپ را ندارید و ممکن است به همین دلیل در آینده به دلیل وجود فایل بک آپ ناقص دانلود شده یا مشکل دار تجارت شما به خطر بیافتد.
یکی از الگوریتم های کاربردی که معمولا اکثر فایل ها توسط این الگوریتم کدگذاری میگردد، الگوریتم MD5 میباشد. این الگوریتم که بهبود یافته نسخه قبل خود یعنی MD4 میباشد، از امینت مناسبی برخوردار میباشد و طراحی آن نیز بصورت ۳۲ بیتی یکسان میباشد بدین شرایط که شما هر فایل، متن و … به این الگوریتم ارائه دهید، مقدار بازگشتی آن یک رشته ۳۲ بیتی خواهد بود که به هیچ عنوان امکان کدگذاری برعکس آن نیز وجود نخواهد داشت(البته روش هایی نیز برای مهندسی معکوس آن وجود دارد که در این مقاله از معرفی آن صرف نظر شده است).
روش تولید MD5 چگونه است؟
در تمامی زبان های برنامه نویسی و همچنین سیستم عامل های متفاوت روش های مختلفی برای تولید یک هش کد وجود دارد. البته هش کد های ایجاد شده بر اساس ورودی عمل میکند. پس روش ایجاد هش کد برای یک رشته کاراکتر میتواند بسیار ساده تر از ایجاد هش کد برای یک فایل ۱۰ گیگا بایتی میباشد.
توابع بسیار زیادی بصورت آماده برای تمامی زبان های برنامه نویسی وجود دارد که شما میتوانید به هنگام ذخیره رشته کارکترهای خود آنها را تبدیل به هش کنید .
همچنین برخی از سایتها نیز وجود دارد که شما میتواند بصورت آنلاین از مبدل های آن جهت تولید هش کد استفاده کنید.
در سیستم عامل های مختلف نیز روش های گوناگونی برای ایجاد هش کد وجود دارد. به عنوان مثال در سیستم عامل لینوکس توزیع centos شما میتوانید با دستور ساده زیر برای فایل مدنظر خود یک هش کد از نوع MD5 ایجاد کنید.
بعد از اجرای دستور فوق یک کد واحد ۳۲ بیتی به شما ارائه خواهد شد که به عبارت دیگر اثر انگشت شناسایی فایل فوق میباشد.
همچنین در صورتی که بخواهید فایل موجود در سرور را با فایل دیگری نیز مقایسه کنید، میتوانید به همین روش اقدام کنید و هش کد دریافت شده را با هش کد فایل مدنظر مقایسه کنید تا از سلامت فایل اطمینان حاصل کنید.
در سیستم عامل ویندوز نیز ابزارهایی برای MD5Checksum وجود دارد که میتوانید با دانلود و اجرای آن برای فایلهای خود هش کد تعریف و یا فایل های دانلود شده را با هش کد شرکت ارائه دهنده مقایسه کنید. یکی از این نرم افزارها برای ویندوزMD5 Checksum Verifier میباشد که شما میتوانید برای فایل خود هش کد ایجاد و آن را استفاده کنید.
رمز گشایی هش کد MD5 برای خوانا بودن رشته متن های کد شده نیز توسط ابزارهای آنلان نیز امکان پذیر میباشد. البته اگر که بصورت ترکیبی این هش کدها ایجاد گردند، امکان رمز گشایی آنها بسیار پیچیده تر خواهد بود و شاید عملا روش ساده ای برای رمزش گشایی هش کدهای ترکیبی رشته متن های کد شده وجود نخواهد داشت.