MD5 یا ام دی ۵ یا Message-Digest 5 الگوریتمی برای خلاصه سازی پیام می باشد که پیامی را با طول متفاوت به عنوان ورودی می گیرد و خلاصه پیام یا اثر انگشت دیجیتالی آن را با طول ۱۲۸ بیت به عنوان خروجی برمی گرداند. در اینجا منظور از پیام، هر رشته ای از بیت ها مانند یک متن یا یک فایل می باشد. این الگوریتم در سال ۱۹۹۱ توسط پروفسور رونالد ریوست اختراع شد. MD5 توسعه ای از الگوریتم MD4 است با این تفاوت که از امنیت بیشتری نسبت به MD4 برخوردار است ولی سرعت کمتری نسبت به آن دارد.
MD5 یک الگوریتم هش کردن (Hash function) می باشد. در الگوریتم های هش برای همه ی ورودی های با طول متفاوت، طول کد تولید شده ثابت و غیرقابل بازگشت می باشد. در MD5 نیز فایل های ورودی با هر اندازه و هر فرمتی که باشند، کد خروجی همیشه برابر با ۱۲۸ بیت (۱۶ بایت) خواهد بود که معمولا آن را در قالب ۳۲ عدد هگزادسیمال (مبنای ۱۶) نمایش می دهند. به عنوان مثال اگر رشته ی ۴funweb.ir را به عنوان ورودی به MD5 بدهیم کد تولید شده ۳ac5a1a875d15c84cdb57966b73616ea خواهد بود.
همانطور که ذکر شد ویژگی دیگر این الگوریتم غیر قابل بازگشت بودن یا یک طرفه بودن کد تولید شده می باشد. یعنی نمی توان با استفاده از کد خروجی، ورودی الگوریتم را تشخیص داد. این ویژگی باعث شده است در موارد بسیاری از MD5 برای ذخیره سازی داده ها مانند ذخیره رمزهای عبور استفاده شود.
کدهای تولید شده توسط الگوریتم MD5 منحصر بفرد نیز می باشند. برای هر فایل ورودی، کد MD5 تولید شده یکتا خواهد بود و به همین دلیل آن را اثر انگشت فایل می نامند. به عنوان مثال اگر یک فایل را به عنوان ورودی به الگوریتم MD5 بدهیم، خروجی آن یک کد ۱۲۸ بیتی می باشد که با کد تولید شده برای هر فایل دیگری متفاوت می باشد و در صورتی که حتی یک بیت از فایل تغییر کند، کد MD5 آن تغییر عمده خواهد کرد و به همین دلیل است که در سایت های دانلود در کنار فایل، کد MD5 آن را نیز برای اطمینان از صحت فایل دانلود شده قرار می دهند. البته به طور مطلق نمی توان گفت که MD5 کد تکراری تولید نمی کند ولی احتمال تکراری بودن کد تولید شده یک در ۲۱۲۸=۳.۴*۱۰۳۸ می باشد که احتمال بسیار کمی است و می توان گفت صفر است.
کاربرد MD5
تایید هویت فایل ها :
از آنجا که MD5 برای هر فایل یک اثر انگشت ایجاد می کند می توان از آن برای اطمینان از صحت فایل ها استفاده کرد. به عنوان مثال هنگامی که فایلی را از اینترنت دانلود می کنید اگر در سایت دانلود فایل، کد MD5 فایل هم قرار داده شده باشد می توانید MD5 فایل دانلود شده را با MD5 داده شده در سایت مقایسه کنید و در صورت برابر بودن مطمئن شوید که فایل، صحیح دانلود شده است و یا در بین راه به ویروس آلوده نشده است.
ذخیره اطلاعات به صورت امن :
امروزه بحث امنیت یکی از اساسی ترین موضوعات در طراحی نرم افزارها و ذخیره اطلاعات کاربران به شمار می رود. گاها پیش می آید که نیاز به ذخیره سازی اطلاعات به صورت امن و غیرقابل بازگشت وجود دارد.
در این موارد می توان اطلاعات را با استفاده از الگوریتم MD5 هش کرد و سپس آنها را در دیتابیس ذخیره نمود. فرض کنید در برنامه هایی که کلمه عبور شما را ذخیره می کنند، رمز عبور به همان صورتی که شما وارد کرده اید در دیتابیس ذخیره شود. در این صورت اگر فردی به دیتابیس دسترسی پیدا کند تمامی رمزهای عبور کاربران را می تواند بدست آورد و با استفاده از آن هر اقدامی را انجام دهد.
حتی ممکن است کاربران برای حساب های خود رمزهای عبور مشترک قرار دهند و رمز عبور دزدیده شده، رمز حساب های دیگر وی نیز باشد. برای جلوگیری از این کار بسیاری از برنامه ها رمزهای عبور را ابتدا توسط الگوریتم MD5 هش می کنند و سپس در دیتابیس ذخیره می کنند. در این حالت حتی اگر فردی به دیتابیس دسترسی پیدا کند متوجه نخواهد شد رمز عبور شما چیست؟! شاید در اینجا این سوال مطرح شود که پس برنامه ها چگونه درستی رمز عبور وارد شده را تشخیص می دهند؟ هنگامی که کاربری قصد وارد شدن به برنامه را دارد، باید نام کاربری و رمز عبور خود را وارد نماید.
برنامه، رمز عبور وارد شده ی کاربر را با الگوریتم MD5، هش می کند و سپس مقدار هش شده ی رمز عبور وارد شده را با مقدار ذخیره شده در دیتابیس مقایسه می کند و در صورت برابر بودن بدین معنی است که کاربر کلمه عبور خود را صحیح وارد کرده است.
پس اگر برنامه ای که اطلاعات محرمانه شما را ذخیره می کند، بتواند به شما رمز عبورتان را بگوید آن برنامه به هیچ وجه قابل اطمینان نیست. برای اینکار می توانید از قسمت “فراموشی رمز عبور” در سایت هایی که عضو آن هستید استفاده نمایید. اگر رمز عبور شما به صورت هش شده در دیتابیس ذخیره شده باشد امکان بازیابی رمز عبور وجود ندارد و به همین دلیل لینکی برای تغییر کلمه ی عبور برای شما ارسال خواهد شد. اما اگر کلمه ی عبور برای شما ارسال شد مشخص خواهد شد که رمز عبور شما به صورت هش شده ذخیره نشده است.
نتیجه گیری
هش کردن (Hash) روشی برای کد کردن داده با طول رشته ثابت هست که به صورت یکطرفه عملیات رمزنگاری را انجام می دهد و عملا روش متعارفی برای رمزگشایی آن وجود ندارد. البته روش های غیرمتعارف برای این کار وجود دارد. به عنوان مثال در برخی سایت ها دیتابیس بزرگی از رایجترین کلمات و عبارات و مقدار هش شده ی آنها وجود دارد. و در صورتی که مقدار هش شده ی عبارت رایجی را به آن بدهید، اگر در دیتابیس بیاید مقدار ورودی را به شما خواهد گفت.
الگوریتم MD5 یکی از پرکاربردترین الگوریتم های هش کردن داده ها می باشد که می توان از آن برای اطمینان از صحت فایل ها و ذخیره سازی امن داده ها استفاده نمود.
برنامه های بسیاری برای بدست آوردن کد MD5 یک فایل و یا یک متن وجود دارد. شما می توانید به صورت آنلاین در برخی سایت ها، کد MD5 داده ورودی خود را بدست آورید و یا از برنامه های معروفی مانند Md5sum، Md5Checker، WinMd5، WinMd5sum استفاده نمایید.