آشنایی با اگوریتم های Hashing

به گزارش مهسان بلاگ، یکی از خصوصیات جالب اگوریتم های Hashing این است که اندازه فایل داده ورودی شما هر اندازه که باشد در نهایت یک رشته داده معین خروجی به شما تحویل خواهد داد.

آشنایی با اگوریتم های Hashing

به گزارش خبرنگار ، درهم سازی و یا تبدیل یک رشته داده به یک مقدار یا رشته با اندازه ثابت نمونه ای از رمزنگاری اطلاعات محسوب می گردد که آن را با عنوان 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 به هیچ عنوان در صورت متفاوت بودن ورودی های داده ای آن یکسان نخواهد بود مگر اینکه داده ورودی یکسان باشد.

  • (Message digest 5 (MD5:در این الگوریتم digest ایجاد شده 128 بیتی است.
  • (Secure Hash Algorithm 1 (SHA-1:در این الگوریتم digest ایجاد شده 160 بیتی است.
  • (Secure Hash Algorithm 2 (SHA-2:در این الگوریتم digest ایجاد شده می تواند بین 224 تا 512 بیت باشد.
  • هر دو ورودی یکسان خروجی یکسانی دارند؛ به طور مثال اگر کلمه Ali را برروی دو سیستم متفاوت با الگوریتم MD5Hash کنید خروجی هر دو یکسان خواهد بود.
  • هیچ دو ورودی گوناگون خروجی یکسانی ندارند.
  • الگوریتم Hash (هش) یک الگوریتم برگشت ناپذیر است.

حال این سوال پیش می آید که؛

در ابتدا باید بدانید که؛ الگوریتم های Hashing برای انجام عمل Hash از کل دیتا اولیه استفاده نمی نمایند بلکه بخشی از دیتا را برداشته و با انجام محاسبات مختلف و پیچیده این کار را انجام میدهند لذا در صورت امکان برگشت مراحل طی شده هیچگاه به دیتای اولیه نخواهیم رسید.

حال این سوال پیش می اید که ؛

روش کار بسیار ساده است این نرم افزار ها یک دیتابیس از کلمات، جملات، اعداد و… را دارند و همه را جداگانه Hash نموده اند لذا زمانیکه شما یک مقدار Hash به ورودی می دهید تنها با انجام عمل مقایسه داده شما با نتایج Hash شده درون دیتابیس به مقدار اولیه دست پیدا می نمایند.

berlinro.ir: آلمان: سفر به مهد صنعت و فناوری اروپا، برلین، هامبورگ، هانوفر

namasho.com: نماشو: آگهی رایگان، رپورتاژ رایگان، آگهی بنری ارزان، خرید بک لینک

منبع: باشگاه خبرنگاران جوان
انتشار: 2 آذر 1400 بروزرسانی: 2 آذر 1400 گردآورنده: mahsanblog.ir شناسه مطلب: 32828

به "آشنایی با اگوریتم های Hashing" امتیاز دهید

امتیاز دهید:

دیدگاه های مرتبط با "آشنایی با اگوریتم های Hashing"

* نظرتان را در مورد این مقاله با ما درمیان بگذارید