فرآیند Hashing یا درهم سازی به تبدیل کردن یک رشته داده به یک مقدار یا رشته با اندازه ثابت که این رشته یا مقدار خروجی نمایانگر رشته اصلی باشد گفته می شود. تصور کنید که شما یک فایل متنی با ۱۰ هزار خط متن را به یک الگوریتم درهم سازی یا Hashing می سپارید و خروجی آن یک رشته داده ۱۲۸ بیتی خواهد بود ، در همین حین اگر شما یک فایل متنی با ۱ خط متن هم به همین الگوریتم درهم سازی یا Hashing تحویل دهید در نهایت خروجی شما نیز یک رشته داده ۱۲۸ بیتی خواهد بود. تصور کنید شما هزاران فایل داده دارید با حجم های مختلف که می خواهید در آنها جستجو کنید ، به جای اینکه به دنبال فایل اصلی بگردید کافیست که فقط به دنبال مقدار Hash مورد نظر بگردید و این فرآیند جستجوی شما را در پایگاه های داده بسیار سریع می کند. یکی از پر کاربردترین استفاده های یک تابع درهم سازی یا Hashing Function در پایگاه داده های وب سایت ها یا حتی سیستم خود شما برای نگهداری رمزهای عبور است. تمامی رمزهای عبوری که در پایگاه داده یک وب سایت ذخیره می شوند به حالت Hash شده نگهداری می شوند ، این یعنی اینکه اگر رمز عبور شما ۱ کاراکتر باشد و یا اینکه ۱۰۰ کاراکتر باشد در نهایت بصورت مثلا یک رشته داده ۱۲۸ بیتی در پایگاه داده بصورت درهم سازی شده نگهداری می شود. هر بار که شما می خواهید به وب سایت وارد شوید ، رمز عبور شما دریافت می شود و تبدیل به مقدار یا Hash Value می شود و با پایگاه داده مورد نظر مقایسه می شود ، اگر مقادیر برابر بود یعنی رمز شما درست است ، دیگر فرقی نمی کند رمز شما یک کاراکتر باشد یا ده ها کاراکتر در نهایت سرعت جستجو در چنین حالتی بسیار بالا خواهد رفت.
نکته مهم در خصوص توابع درهم سازی یا Hashing Function ها این است که شما هر چقدر هم که اندازه فایل داده ورودی داشته باشید در نهایت یک رشته داده مشخص خروجی خواهید داشت و حتی اگر یک بیت از داده های اولیه شما تغییر کند ، خروجی شما کاملا متفاوت خواهد بود و این یعنی اینکه می توان با استفاده از الگوریتم های درهم سازی یا Hashing صحت داده های شما را بررسی کرد ، همان کاری که در بررسی رمزهای عبور شما انجام می شود. شما اگر می خواهید از صحت و تمامیت داده ارسالی یا دریافتی خود در مسیر یک شبکه اطمینان حاصل کنید کافیست به جای اینکه به ازای هر بیت ارسالی یک بسته تاییدیه یا Acknowledge دریافت کنید ، ابتدا در مبدا از فایل خود یک مقدار Hash تهیه کنید و بعد از رسیدن به مقصد نیز مجددا از فایل خود یک Hash تهیه کنید و مقادیر را با هم مقایسه کنید ، در صورتیکه مقادیر شما یکسان باشد فایل شما حتی اگر چند ترابایت داده نیز داشته باشد قطعا سالم و درست خواهد بود. نکته بسیار مهم در خصوص الگوریتم های درهم سازی یا Hashing این است که شما می توانید داده های خود را به مقادیر Hash تبدیل کنید اما به هیچ عنوان نمی توانید از مقادیر Hash داده های خود را استخراج کنید. یعنی شما می توانید یک فایل یک ترابایتی داده را تبدیل به یک مقدار ۱۲۸ بیتی Hash کنید اما قطعا نمی توانید از این مقدار Hash داده یک ترابایتی خود را استخراج کنید ، به همین دلیل است که از الگوریتم های درهم سازی یا Hashing به عنوان الگوریتم های رمزنگاری یک طرفه یا One Way یاد می شود یعنی داده فقط تبدیل به مقدار Hash می شود و عکس این عمل قطعا انجام نخواهد شد. البته از الگوریتم های درهم سازی یا Hashing در مصارف یا بهتر بگوییم در الگوریتم های دیگر رمزنگاری بصورت ترکیبی نیز استفاده می شود که از جمله آنها می توانیم به استفاده از Hashing در رمزنگاری و رمزگشایی امضاهای دیجیتال اشاره کنیم.خروجی الگوریتم های درهم سازی یا Hashing به هیچ عنوان در صورت متفاوت بودن ورودی های داده ای آن یکسان نخواهد بود مگر اینکه داده ورودی یکسان باشد.