تفاوت Hashingو Encryptionچیست ؟
مقاله امروز درباره تعریف هر یک از اص طالحات Hashing و Encryption اس ت و مش خص می ک نیم
این دو چه تفاوت هایی باهم دارند .حتما این اصطالحات را در زبان هایی مانند phpو حتی فریم ورک ه ایی
مانند الراول شنیده اید .
Hashingیا درهم سازی چیست ؟
فرآیند Hashingیا درهم سازی به تبدیل کردن یک رشته داده به ی ک مق دار ی ا رش ته ب ا ان دازه ث ابت ک ه این
رشته یا مقدار خروجی نمایانگر رشته اصلی باشد گفته می شود .تص ور کنی د ک ه ش ما ی ک فای ل مت نی ب ا 10
هزار خط متن را به یک الگوریتم درهم س ازی ی ا Hashingمی س پارید و خ روجی آن ی ک رش ته داده 128
بیتی خواهد بود ،در همین حین اگر شما یک فای ل مت نی ب ا 1خ ط متن هم ب ه همین الگ وریتم درهم س ازی ی ا
Hashingتحویل دهید در نهایت خروجی شما ن یز ی ک رش ته داده 128بی تی خواه د ب ود .تص ور کنی د ش ما
هزاران فایل داده دارید با حجم های مختلف که می خواهید در آنها جستجو کنید ،به جای اینک ه ب ه دنب ال فای ل
اصلی بگردید کافیست که فقط به دنبال مقدار Hashمورد نظر بگردید و این فرآیند جستجوی شما را در پایگاه
ه ای داده بس یار س ریع می کن د .یکی از پ ر ک اربردترین اس تفاده ه ای ی ک ت ابع درهم س ازی ی ا Hashing
Functionدر پایگاه داده های وب سایت ها یا حتی سیس تم خ ود ش ما ب رای نگه داری رمزه ای عب ور اس ت.
تمامی رمزهای عبوری که در پایگاه داده یک وب سایت ذخیره می ش وند ب ه ح الت Hashش ده نگه داری می
شوند ،این یعنی اینکه اگر رمز عبور شما 1کاراکتر باشد و یا اینک ه 100ک اراکتر باش د در نه ایت بص ورت
مثال یک رشته داده 128بیتی در پایگاه داده بصورت درهم سازی شده نگهداری می شود .هر بار که ش ما می
خواهید به وب سایت وارد شوید ،رمز عبور شما دریافت می شود و تبدیل به مقدار یا Hash Valueمی شود
و با پایگاه داده مورد نظر مقایسه می شود ،اگر مقادیر برابر بود یعنی رم ز ش ما درس ت اس ت ،دیگ ر ف رقی
نمی کند رمز شما یک کاراکتر باشد یا ده ه ا ک اراکتر در نه ایت س رعت جس تجو در چ نین ح التی بس یار ب اال
خواهد رفت.
نکته مهم در خصوص توابع درهم سازی یا Hashing Functionها این است که شما هر چقدر هم که اندازه
فایل داده ورودی داشته باشید در نهایت یک رشته داده مشخص خروجی خواهید داشت و حتی اگر یک بیت از
داده های اولیه شما تغییر کند ،خروجی شما کامال متفاوت خواهد بود و این یعنی اینکه می ت وان ب ا اس تفاده از
الگوریتم های درهم سازی یا Hashingصحت داده های شما را بررس ی ک رد ،هم ان ک اری ک ه در بررس ی
رمزهای عبور شما انجام می شود .شما اگر می خواهید از صحت و تم امیت داده ارس الی ی ا دری افتی خ ود در
مسیر یک شبکه اطمینان حاصل کنی د کافیس ت ب ه ج ای اینک ه ب ه ازای ه ر بیت ارس الی ی ک بس ته تاییدی ه ی ا
Acknowledgeدریافت کنید ،ابتدا در مبدا از فایل خ ود ی ک مق دار Hashتهی ه کنی د و بع د از رس یدن ب ه
مقصد نیز مجددا از فایل خود یک Hashتهیه کنید و مقادیر را با هم مقایسه کنی د ،در ص ورتیکه مق ادیر ش ما
یکسان باشد فایل شما حتی اگر چند ترابایت داده نیز داشته باشد قطعا سالم و درست خواهد بود .نکته بسیار مهم
در خصوص الگوریتم های درهم سازی یا Hashingاین است که شما می توانید داده های خ ود را ب ه مق ادیر
Hashتبدیل کنید اما به هیچ عنوان نمی توانید از مقادیر Hashداده های خود را استخراج کنید .یعنی ش ما می
توانید یک فایل یک ترابایتی داده را تب دیل ب ه ی ک مق دار 128بی تی Hashکنی د ام ا قطع ا نمی توانی د از این
مقدار Hashداده یک ترابایتی خود را استخراج کنید ،به همین دلیل است که از الگوریتم های درهم سازی ی ا
Hashingبه عنوان الگوریتم های رمزنگاری یک طرفه یا One Wayیاد می شود یعنی داده فق ط تب دیل ب ه
مق دار Hashمی ش ود و عکس این عم ل قطع ا انج ام نخواه د ش د .البت ه از الگ وریتم ه ای درهم س ازی ی ا
Hashingدر مصارف یا بهتر بگوییم در الگوریتم های دیگ ر رمزنگ اری بص ورت ترکی بی ن یز اس تفاده می
شود که از جمله آنها می توانیم به استفاده از Hashingدر رمزنگاری و رمزگشایی امضاهای دیجیت ال اش اره
کنیم.خروجی الگوریتم های درهم سازی یا Hashingبه هیچ عن وان در ص ورت متف اوت ب ودن ورودی ه ای
داده ای آن یکسان نخواهد بود مگر اینکه داده ورودی یکسان باشد.
رمزنگاری یا Encryptionچیست ؟
فرآیند رمزنگاری یا Encryption به تبدیل کردن داده ها به قالبی که فقط افراد مجاز می توانن د آن را مش اهده
کنن د گفت ه می ش ود ،در این تب دیل ق الب داده تب دیل ش ده را در اص طالح Cipher-Textمی ن امیم .فرآین د
رمزنگاری یا Encryptionدارای قدمت چند هزار س اله می باش د و ب ه ان واع و اقس ام روش ه ا از آس ان ت ا
سخت طبقه بندی می ش ود .مهم ترین نکت ه ای ک ه در خص وص رمزنگ اری وج ود دارد این اس ت ک ه فرآین د
رمزنگاری شما متناسب با اندازه و مقدار داده های شما می باشد و با اضافه شدن میزان داده های اطالعاتی به
الگوریتم ه ای رمزنگ اری طبیعت ا Cipher-Textه ای خ روجی ن یز دارای ان دازه متناس بی می باش ند .ش ما
برخالف الگوریتم های درهم سازی یا Hashing در الگوریتم های رمزنگ اری ی ا Encryption می توانی د
از داده های رمزنگاری شده داده های خود را ب یرون بیاوری د و ب ه این عملی ات رمزگش ایی ی ا Decryption
گفته می ش ود .در فرآین د رمزگش ایی ش ما حتم ا بای د ب ه عن وان ی ک ک اربر مج از کلی د رمزگش ایی الگ وریتم
رمزنگاری متناظر را بایستی داش ته باش ید ت ا بتوانی د فرآین د رمزگش ایی را ب ه درس تی انج ام دهی د .الگ وریتم
رمزنگاری یا Encryption ای به عنوان الگوریتم رمزنگاری ق وی ش ناخته می ش ود ک ه ب دون داش تن کلی د
رمزگشایی نشود به داده های آن دسترسی پیدا کرد .ان واع و اقس ام الگ وریتم ه ای رمزنگ اری وج ود دارد ک ه
مهمترین طبقه بندی آنها الگوریتم های رمزنگاری متقارن و نامتق ارن هس تند ،در الگ وریتم ه ای رمزنگ اری
متقارن همان کلی دی ک ه ب رای رمزنگ اری اس تفاده ش ده اس ت ب رای رمزگش ایی ن یز اس تفاده می ش ود ام ا در
الگوریتم های رمزنگاری نامتقارن یا PKIاز دو کلی د عم ومی و خصوص ی ب رای رمزنگ اری و رمزگش ایی
استفاده می شود که از درجه امنیت بسیار باالیی برخوردار است.
تفاوت Hashingو Encryptionدر چیست ؟
درهم سازی داده ها یا Hashingبه یک فرآیند یک طرفه گفته می ش ود ک ه در آن ه ر ن وع داده خ روجی در
نهایت تبدیل به یک رشته داده خروجی با یک اندازه ثابت می شود که به آن Hash Valueیا مقدار تابع درهم
سازی گفته می شود .شما نمی توانید از یک Hash Valueداده خود را برداشت کنید زیرا این ن وع الگ وریتم
ها کامال یک طرفه هستند و بیشتر برای تسریع فرآیند جس تجو و اطمین ان از ص حت داده ه ا در هنگ ام انتق ال
م ورد اس تفاده ق رار می گیرن د .الگ وریتم ه ایی مث ل MDو SHAاز ان واع الگ وریتم ه ای درهم س ازی ی ا
Hashingهستند که بیشترین استفاده را دارند .رمزنگاری یا Encryptionبه تبدیل داده ها به ق البی گفت ه می
شود که فقط برای کاربران مجاز قابل مشاهده باشد و هیچ کاربر غیرمجازی نتواند داده واقعی را مش اهده کن د.
به داده ای که رمزنگاری شده باشد در اصطالح Cipher-Textگفته می شود ،اندازه داده ای که رمزنگ اری
می شود با حجم داده ورودی آن تا حدود زیادی یکسان است و شما می توانید از داده های رمزنگاری ش ده داده
خود را خارج کنید که به این فرآیند رمزگشایی گفته می شود .الگ وریتم ه ای رمزنگ اری بص ورت کلی ب ه دو
دسته متقارن با یک کلید برای رمزنگاری و همان کلید برای رمزگشایی و نامتقارن که دارای دو کلی د عم ومی
و خصوصی برای رمزنگاری و رمزگشایی می شوند تقسیم بندی می شود.