هش در فضای کریپتو به فرآیند رمزنگاری اطلاعات مربوط میشود و این چیزی است که ما در این مقاله برایتان توضیح خواهیم داد. این ابزار رمزنگاری به احراز هویت ایمن کمک میکند و یکپارچگی پیام دادهها را در شبکههای دیجیتالی را تضمین میکند. در این مقاله از فکت کوینز به عملکرد هش و چیستی آن میپردازیم.
تابع Hash یک فرآیند ریاضی مهم است که نقش بسزایی در رمزنگاری کلید عمومی دارد. چراکه به شما کمک میکند تا :
- رمزهای عبور را به صورتی بسیار امن در پایگاه داده ذخیره کنید.
- از یکپارچگی داده ها (در بسیاری از برنامههای مختلف) با نشان دادن زمان تغییر دادهها اطمینان حاصل کنید.
- احراز هویت کنید.
- محتوا و فایلها را به گونهای سازماندهی کنید که باعث بهبود عملکرد شبکه شود.
تقریباً در همه جا میتوانید تابع Hash را پیدا کنید. از ورود به نرم افزاری که در تلفن خود استفاده میکنید گرفته تا ایمن سازی وب سایتهایی که برای انتقال اطلاعات حساس به صورت آنلاین کاربرد دارند. اما این تابع در رمزنگاری چیست؟ دقیقاً چه کاری برای کمک به محافظت از دادههای کسب و کار شما انجام میدهد؟ و Hashing چگونه انجام میشود؟
تابع هش چیست؟
اصطلاحی مانند “تابع هش” می تواند برای افراد مختلف بسته به آن زمینه موردنظر، چندین معنی داشته باشد. در خصوص توابع Hash در رمزنگاری، تعریف این مفهوم کمی ساده تر است. این تابع یک شناسه منحصر به فرد برای هر بخش معینی از محتوا است. همچنین فرآیندی است که دادههای متن ساده را با هر اندازه ای دریافت میکند و آن را به یک متن رمز نگاری شدهمنحصر به فرد با طول خاصی تبدیل میکند.
قسمت اول تعریف به شما می گوید که هیچ دو قسمتی از یک محتوا Hash یکسانی ندارند و اگر محتوا تغییر کند، خلاصه هش نیز تغییر می کند. اساساً، hashing راهی است برای اطمینان از اینکه هر داده ای که ارسال می کنید، کاملاً دست نخورده و بدون تغییر به گیرنده موردنظرتان برسد.
اما آیا این فرآیند خیلی شبیه به رمزگذاری نیست؟ مطمئناً، آنها مشابه هستند، اما رمزگذاری و hashing یک چیز نیستند. آنها دو عملکرد رمزنگاری جداگانهای هستند که به تسهیل ارتباطات ایمن و قانونی کمک می کنند. بنابراین، اگر جایی شنیدید که شخصی در مورد «رمزگشایی» یک خلاصه Hash صحبت میکند، بدانید که او نمیداند درباره چه چیزی صحبت میکند، چراکه هشها در وهله اول اصلا رمزگذاری نشدهاند.
حالا چگونه میتوانیم Hash را به شکلی تخصصی تر تعریف کنیم؟ این تابع یک الگوریتم رمزنگاری یک طرفه همه کاره است که یک ورودی با هر اندازه را به یک خروجی منحصر به فرد با طول ثابتی از بیت ها تبدیل میکند. خروجی به دست آمده، که به عنوان کد هش شناخته میشود، شناسه منحصر به فردی است که به آن اشاره کردیم.
چرا آن را تابع یک طرفه مینامیم؟ به دلیل قدرت محاسباتی، زمان و هزینهای که برای پردازش آن لازم است. امتحان کردن هر ترکیب ممکنی که منجر به یک مقدار Hash شود، کاملاً بی فایده است. بنابراین، به تمامی این دلایل، تابع Hash یک تابع یک طرفه است.
وقتی دادهها را هش میکنید، خروجی به دست آمده معمولاً کوچکتر از ورودی است که به آن دادید (احتمالاً تنها استثنایی که وجود دارد هش کردن گذرواژههاست.) با hashing ، فرقی نمیکند که یک پیام یک جمله ای داشته باشید یا یک کتاب کامل، نتیجه همچنان مقداری بیت با طول ثابت خواهد بود (متشکل از 1 و 0). این مانع از آن میشود که اشخاص ناخواسته بفهمند پیام اصلی چقدر بزرگ (یا کوچک) بوده است.
این توابع در درجه اول برای احراز هویت استفاده می شوند اما کاربردهای دیگری نیز دارند.
بیشتر بخوانید: احراز هویت دوعاملی و انواع آن
ویژگی یک الگوریتم هش ایده آل چیست ؟
- ثابت بودن : یک الگوریتم Hash باید ثابت و مشخص باشد، به این معنی که خروجی آن همیشه اندازه یکسانی دارد، بدون توجه به اندازه ورودی که به آن دادهاید. این بدان معنی است که اگر یک جمله را Hash می کنید، اندازه خروجی حاصل باید یکسان با اندازه خروجی Hash چند جمله یا حتی یک کتاب کامل باشد.
- مقاوم دربرابر بازگردانی: یک الگوریتم Hash قوی الگوریتمی است که دارای مقاومت بازگردانی است، به این معنی که معکوس کردن یک مقدار Hash و تبدیل آن به ورودی اولیه و داده اصلی غیر ممکن است. اینگونه است که هش به عنوان عملی غیرقابل برگشت و یک طرفه شناخته میشود.
- مقاوم در برابر برخورد: برخورد زمانی رخ می دهد که دو جسم با هم برخورد کنند. خب، این مفهوم در رمزنگاری با مقادیر Hash نیز رخ میدهد. اگر دو نمونه منحصربهفرد از دادههای ورودی به خروجیهای یکسان منجر شوند، به آن برخورد میگویند. این خبر بدی است و به این معنی است که الگوریتمی که برای Hash داده ها استفاده می کنید خراب است و بنابراین ناامن میباشد. اساساً، نگرانی در اینجا این است که کسی می تواند یک فایل مخرب با یک هش تقلبی ایجاد کند که با یک فایل واقعی (ایمن) مطابقت داشته باشد و آن را به عنوان هش واقعی ارسال کند زیرا امضای دیجیتال آن با فایل اصلی مطابقت دارد. بنابراین، یک الگوریتم Hash خوب و قابل اعتماد، الگوریتمی است که در برابر این برخوردها مقاوم باشد.
- اثر بهمنی : این بدان معناست که هر تغییری که در داده ی ورودی ایجاد شود، مهم نیست که چقدر کوچک باشد، منجر به تغییری بزرگ در خروجی خواهد شد. اساساً، یک تغییر کوچک (مانند اضافه کردن یک ویرگول یا به اصطلاح یک دانه برف) به چیزی بسیار بزرگتر تبدیل می شود(یک بهمن)، از این رو به آن عنوان “اثر بهمنی” را داده اند.
- سرعت Hashing: الگوریتم های Hash باید با سرعت معقولی کار کنند. در بسیاری از موقعیت ها، الگوریتمهای Hash باید مقادیر Hash را به سرعت محاسبه کنند. این ویژگی ایده آل یک تابع Hash رمزنگاری در نظر گرفته می شود. با این حال، این ویژگی تا حدی نسبی بشمار می آید. سریعتر بودن همیشه به معنای بهتربودن نیست زیرا سرعت باید به نحوه استفاده از الگوریتم هش بستگی داشته باشد. گاهی اوقات، شما یک الگوریتم هش سریعتر میخواهید، و گاهی بهتر است از الگوریتم کندتر استفاده کنید که اجرای آن به زمان بیشتری نیاز دارد. مورد اول برای اتصالات وب سایت و مورد دوم برای هش رمز عبور بهتر است.
عملکرد تابع هش
یکی از اهداف این تابع در رمزنگاری، گرفتن یک ورودی متن ساده و تولید یک خروجی مقدار Hash شده با یک اندازه خاص به روشی است که قابل بازگردانی نباشد. اما وقتی از بالا به آنها نگاه میکنید، کاربردهای بیشتری دارند. توابع Hash تمایل دارند در دنیای رمزنگاری چند کار مختلف کنند. به طور خلاصه، توابع Hash قوی:
- از یکپارچگی داده ها اطمینان پیدا میکنند،
- در برابر تغییرات غیرمجاز مقاوم هستند،
- از رمزهای عبور ذخیره شده محافظت میکنند، و
- در راستای اهداف مختلف با سرعت های مختلف عمل میکنند.
اطمینان از یکپارچگی دادهها
توابع Hash راهی برای اطمینان از یکپارچگی داده ها در رمزنگاری کلید عمومی هستند. منظورم از این مسئله این است که این توابع بهعنوان یک روش بررسی کلی عمل میکنند، یا درواقع راهی برای شناسایی اینکه آیا دادهها پس از امضای دیجیتال خود دستکاری شدهاند یا خیر. همچنین به عنوان وسیله ای برای تأیید هویت عمل می کنند.
به عنوان مثال، فرض کنید برای ارسال ایمیل به من به یک وای فای عمومی وصل شده اید. (راستی این کارو نکنید. خیلی ناامنه.) شما پیام را می نویسید، با استفاده از گواهی دیجیتال خود آن را امضا می کنید و آن را در بستر اینترنت ارسال میکنید. این همان چیزی است که شما ممکن است آن را حمله واسطه ای بنامید – به این معنی که یک فرد می تواند به راحتی پیام شما را رهگیری کند (بازم بخاطر اینکه اینترنت های عمومی بشدت در ناامن بودن خود مشهورن) و آن را مطابق با اهداف ناگوار خود تغییر دهد.
حالا، من پیام را دریافت می کنم و می خواهم از اصالت آن مطمئن شوم. کاری که من میتوانم انجام دهم این است که از آن استفاده کردهاید) استفاده کنم تا خودم Hash را دوباره تولید کنم تا بررسی کنم که آیا مقدار Hash ایجاد شده با مقدار هشی که شما فرستاده اید مطابقت دارد یا خیر. اگر مطابقت داشته باشد که چه عالی، به این معنی است که کسی آن را دستکاری نکرده است. اما اگر اینطور نباشد… خب، میدانم که خبری است و نباید به آن پیام اعتماد کنم.
حتی اگر چیزی کوچک در یک پیام تغییر کند – مثلا به جای استفاده از حروف کوچک، یک حرف را بزرگ بنویسید، یا بجای نقطه در یک جا از علامت تعجب استفاده کنید – این اتفاق منجر به تولید یک مقدار Hash کاملاً جدید خواهد شد. اما نکته موضوع همینجاست – مهم نیست که یک تغییر چقدر بزرگ یا کوچک باشد، تفاوت در مقادیر Hash به شما می گوید که آن پیام اصل نیست.
ایمن در برابر تغییرات غیرمجاز
یکی از بهترین جنبه های یک تابع Hash رمزنگاری این است که به شما کمک می کند تا از یکپارچگی داده ها اطمینان حاصل کنید. اما اگر هش را روی داده اعمال کنید، آیا به این معنی است که پیام را نمی توان تغییر داد؟ خیر. اما کاری که انجام می دهد این است که به گیرنده پیام اطلاع می دهد که پیام تغییر کرده است. چراکه حتی کوچکترین تغییری در پیام منجر به ایجاد یک مقدار Hash کاملاً جدید می شود.
به hashing مانند زنگ هشدار دود فکرکنید. باوجود آنکه هشدار دود از شروع آتش جلوگیری نمی کند، قبل از آنکه خیلی دیر شود، به شما از وجود یک خطر اطلاع می دهد.
ذخیره امن رمز عبور
امروزه، بسیاری از وبسایتها به شما اجازه میدهند رمزهای عبور خود را ذخیره کنید تا مجبور نباشید هر بار که میخواهید وارد شوید، آنها را به خاطر بسپارید. اما ذخیره رمزهای عبور متن ساده در یک سرور عمومی خطرناک است زیرا این اطلاعات را در دسترس مجرمان سایبری آسیبپذیر قرار میدهد. بنابراین، کاری که وبسایتها معمولاً انجام میدهند این است که رمزهای عبور را Hash میکنند تا مقادیر Hash بدست آوردند و این مقادیر را بجای رمزهای اصلی ذخیره میکنند.
اما hashing رمز عبور به تنهایی برای محافظت از شما در برابر انواع خاصی از حملات، از جمله حملات قوی کافی نیست. به همین دلیل است که ابتدا باید یک سالت (Salt) اضافه کنید. Salt یک عدد تصادفی و منحصر به فرد است که قبل از هش کردن رمزهای عبور روی آن ها اعمال می شود. این عدد یک لایه امنیتی اضافی را فراهم می کند و می تواند رمزهای عبور را از روش های شکستن رمز عبور مانند حملات rainbow table محافظت کند.
کاربرد در اهداف متفاوت
مهم است که توجه داشته باشید که توابع Hash مناسب تمامی انواع کارها و اهداف نیستند. همانطور که قبلاً اشاره کردیم، توابع Hash مختلف بسته به طراحی و سرعت هش، اهداف مختلفی را دنبال میکنند. آنها با سرعت های عملیاتی متفاوتی کار می کنند – برخی سریع تر هستند درحالیکه برخی دیگر بسیار کند میباشند. این سرعتها میتوانند به امنیت یک الگوریتم Hash کمک کنند یا بسته به نحوه استفاده از آن، از امنیت آن کم کنند. بنابراین، برخی در دسته الگوریتم های ایمن Hash قرار میگیرند و برخی دیگر در این دسته بندی نیستند.
اگر بخواهیم موقعیتی را مثال بزنیم که بهتر است از یک الگوریتم Hash سریع استفاده کنید، هنگام اتصال ایمن به وب سایت ها است. این موقعیتی است که داشتن سرعت بیشتر اهمیت دارد زیرا به ارائه تجربه کاربری بهتر کمک می کند. با این حال، اگر میخواهید قابلیت ذخیره رمزهای عبور در وبسایتتان را فعال کنید، قطعاً بهتر است که از یک الگوریتم Hash آهسته استفاده کنید. برای دسترسی غیرمجاز به اینگونه الگوریتم ها یک حمله سایبری قوی نیاز است که زمان و منابع محاسباتی بیشتری را میطلبد. شما که قصد ندارید کار را برای مجرمان سایبری آسان کنید؟
کاربرهای هش در موقعیت های مختلف
توابع Hash را کجا میشود پیدا کرد؟ تنها کافیست به فناوری های اطراف خود نگاه کنید. هش کردن در همه جا مورد استفاده قرار میگیرد، از امضای یک نرم افزار جدید و تأیید امضای دیجیتال گرفته تا ایمن کردن اتصالات وب سایت در رایانه و مرورگرهای وب تلفن همراه شما. همچنین برای نمایه سازی و بازیابی اطلاعات در پایگاه های داده آنلاین عالی است. یکی از موارد استفاده Hash ، بازبینی و تایید کردن موارد زیر است:
- بلوک های داده در ارزهای دیجیتال و سایر فناوری های بلاک چین.
- یکپارچگی داده های نرم افزار، ایمیل ها و اسناد.
- رمزهای عبور و ذخیره سازی Hash رمزهای عبور (به جای خود رمزها) در پایگاه های داده آنلاین. (توجه: این فرآیند به کمی مکمل خاص نیاز دارد تا آن Hash ها را ایمن تر کند، یک salt).
توابع Hash را می توان در سراسر فرآیند رمزنگاری کلید عمومی یافت. به عنوان مثال، خواهید دید که توابع Hash با استفاده از موارد زیر تسهیل می شوند:
- گواهیهای SSL / TLS به عنوان مثال، گواهیهای امنیتی وبسایت،
- گواهی امضای کد،
- گواهی امضای اسناد، و
- گواهی امضای ایمیل.
هش کردن چگونه عمل می کند؟
هنگامی که یک پیام را هش می کنید، رشته ای از داده ها با هر اندازه ای را به عنوان ورودی خود می گیرید، آن را از طریق یک الگوریتم ریاضی پردازش می کنید که منجر به تولید یک خروجی با طولی ثابت می شود.
در برخی روشهای hashing، ورودی داده اصلی به بلوکهای کوچکتر با اندازه مساوی تقسیم میشود. اگر در هیچ یک از بلوک ها، داده های کافی وجود نداشته باشد که اندازه آن یکسان باشد، می توان از Padding ها (همان یک ها و صفرها) برای پر کردن آن استفاده کرد. سپس آن بلوکهای جداگانه دادهها از طریق یک الگوریتم هش پردازش شده و به ایجاد خروجی Hash منجر میشوند.
البته اگر رمزهای عبور را برای ذخیره سازی در یک سرور آنلاین Hash کنید، این روند کمی متفاوت به نظر می رسد. این فرآیند شامل استفاده از salt است. دز اصل، قبل از گذراندن آن از طریق الگوریتم Hash، یک مقدار تصادفی و منحصر به فرد به پیام اضافه می کنید. حتی با افزودن یک کاراکتر، یک مقدار Hash کاملاً جدید در پایان فرآیند دریافت می کنید.
نمونه های مختلف از hashing با الگوریتم های گوناگون
خوب، اکنون که می دانیم تابع Hash چیست و به لحاظ تئوری چه کاری انجام می دهد، بیایید با چند مثال نحوه عملکرد منطقی آن در واقعیت رابفهمیم. فرض کنید معمای زیر از طرف گالم (موجود عجیبی در دنیای ارباب حلقه ها) را به عنوان ورودی خود دارید:
” نمی توان آن را دید، نمی توان آن را احساس کرد،
نه شنیده می شود، نه می توان آن را بو کرد.
پشت ستاره ها و زیر تپه ها قرار دارد،
و حفره های خالی را پر می کند.
ابتدا بیرون می آید و پس از آن،
زندگی را پایان می دهد و خنده را می کشد.”
نخیر، اگر تا الان به جواب معما پی نبرده اید، من هم جواب رو قرار نیست بهتون بگم. اما اگر بخواهید این معما را از طریق یک الگوریتم هش SHA-256 پردازش کنید، خروجی حاصل در صفحه نمایش شما به صورت زیر خواهد بود:
49FCA16A2271B34066DAA46492C226C4D4F61D56452A1E1A01A3201B234509A2
حالا اگر بخواهید یک پیام کوچکتر را Hash کنید چه؟ مثلاً جمله «ارباب حلقهها». تا زمانی که از همان الگوریتم Hash استفاده کنید، خروجی شما از لحاظ اندازه یکسان خواهد بود (همانطور که در زیر نشان داده شده است):
01912B8E8425CFF006F430C15DBC4991F1799401F7B6BEB0633E56529FE148B9
دلیل یکسان بودن اندازه آنها این است که هر دو رشته، نمونه های ۲۵۶ بیتی هستند که به صورت ۶۴ کاراکتر هگزا دسیمال به ازای هر رشته روی صفحه شما نمایش داده می شوند. مهم نیست که پیام چقدر بزرگ یا کوچک است، همیشه خروجی ای با اندازه مشخص تحویل شما میدهد. به یاد داشته باشید، یکی از ویژگی های الگوریتمهای Hash ثابت و مشخص بودن آنهاست، بنابراین آنها همیشه بدون توجه به اندازه ورودی، خروجی یکسانی تحویل میدهند.
حال، اگر بخواهید همان ورودی معمای شش خطی را بگیرید و آن را از یک تابع هش MD5 بگذرانید، در عوض با یک مقدار Hash اینشکلی مواجه خواهید شد:
B53CE8A3139752B10AAE878A15216598
همانطور که می بینید، خروجی کمی کوتاه تر است. این به این دلیل است که MD5 یک خلاصه hash به شما می دهد که تنها 32 کاراکتر هگزادسیمال دارد. این دقیقا نصف اندازه hash ایست که از الگوریتم SHA 256 حاصل می شود. اما هر بار که یک الگوریتم هشMD5 را روی یک پیام متنی ساده اجرا می کنید، خروجی به همان اندازه خواهد بود.
حالا اگر معما را از الگوریتم هش SHA 512 بگذارنید چه میشود؟ در آن صورت از نظر طول دقیقا به طرف مخالف این معادله میرویم و خلاصه Hash شما چیزی شبیه به این خواهد شد (رشته هگزادسیمال 512 بیت):
6DC1AAE5D80E8F72E5AF3E88A5C0FA8A71604739D4C0618182303EEEB1F02A0DBA319987D5B5F717E771B9DA1EAD7F3F92DC8BA48C064D41DD790D69D7D98B44
مقایسه هش و رمزگذاری
آیا Hash و رمزگذاری یکسان نیستند؟ خیر. بله، هر دو توابع رمزنگاری هستند که از الگوریتم ها به عنوان بخشی از فرآیندهای خود استفاده می کنند. اما همینجاست که شباهت ها به پایان می رسد.
همانطور که می دانید، تابع Hash یک تابع یک طرفه است. هدف این است که میتوانید از آن برای تبدیل متن های ساده قابل خواندن به یک رشته اعداد هگزادسیمال غیرقابل خواندن استفاده کنید، اما نه برعکس. از طرف دیگر رمزگذاری به عنوان یک تابع دو طرفه شناخته می شود. این به این دلیل است که هدف اصلی رمزگذاری چیزی، جلوگیری از دسترسی اشخاص ناخواسته به اطلاعات است. بنابراین، داده ها را رمزگذاری می کنید تا فقط توسط شخصی که رمز را در اختیار دارد، رمزگشایی شود.
نمونه هایی از الگوریتم های hash رایج و خانواده الگوریتم ها
خوب، ما اکنون میدانیم که تابع Hash چیست و الگوریتم های hash چگونه کار می کنند. اکنون زمان آن رسیده است که برخی از رایج ترین الگوریتم های هش را یاد بشناسیم. سازمان NIST همانند چندین استاندارد پردازش اطلاعات فدرال (FIPS) در مورد توابع hash راهنمایی ارائه میکند.
چند نمونه از الگوریتم های Hash رایج عبارتند از:
• الگوریتم هش ایمن (SHA): این خانواده hash شامل SHA 1، SHA 2 (خانواده ای جزو خانواده ای دیگر که شامل SHA-224،SHA-256، SHA-384 و SHA-512 میشود) و) SHA-3 SHA3-224، SHA3-256، SHA3-384 و SHA3-512). SHA-1 منسوخ شده است و رایج ترین الگوریتم Hash در حال حاضر SHA-256 است.
• خلاصه پیام (MD): این خانواده از hash ها شامل انواع توابع Hash است که شامل MD2، MD4، MD5 و MD6 می شود. MD5 برای مدت طولانی به عنوان یک الگوریتم hash مطمئن در نظر گرفته می شد، اما اکنون مشکل پیدا کرده است زیرا منجر به برخوردهای زیادی میشود.
ویندوز NTHash: این Hash که به عنوان hash یونیکد یا NTLM نیز شناخته میشود، معمولاً توسط سیستمهای ویندوز استفاده میشود، زیرا نسبت به نسخه قبلی خود، هشLM ، ایمنتر است. با این حال، NTHash نیز هنوز نقاط ضعفی دارد که باید نگران آن بود، اما این الگوریتم خاص برای سیستمهای ویندوز یکپارچه است. با وجود آنکه امروزه استفاده از NTLMv1 بسیار نارایج است، NTLM2 همچنان در حال استفاده میباشد.
نمونههای دیگری از الگوریتمهای Hash عبارتند از BLAKE 2 وBLAKE 3، RIPEMD-160 و WHIRLPOOL و غیره.
و اما به صورت خلاصه:
موارد زیادی برای دانستن در مورد توابع هش و هش کردن به طور کلی وجود دارد. اینکه چه هستند، چه کار میکنند، چگونه عمل میکنند، و در کجا میتوانید آنها را در ارتباطات و فناوری های رایانهای پیدا کنید.
- Hash در ساختار داده برای نمایه سازی و بازیابی اطلاعات مفید است. همچنین با شناسایی تغییرات، امکان بررسی و تایید کردن را فراهم میکند.
- در رمزنگاری، فرآیند hashing داده های متن ساده (ورودی) را میگیرد و آن ها را از یک فرآیند ریاضی معروف به الگوریتم Hash قرار میدهند. این فرآیند یک خروجی به نام مقدار hash با طولی ثابت تولید میکند.
- یک تابع Hash ثابت و مشخص است، به این معنی که بدون توجه به اندازه ورودی، خروجی همیشه یک اندازه خواهد بود. همچنین در برابر تصادم و بازگردانی مقاوم است.
- مقاومت در برابر تصادم به این معنی است که شما نمی توانید دو ورودی منحصر به فرد داشته باشید که منجر به خروجی یکسان شوند، و
- مقاومت در برابر برگشت دادن یعنی که فرآیند Hash یک تابع یک طرفه است که نمیتوان آن را معکوس کرد تا به پیام اولیه دست پیدا کرد.
- شما نمی توانید داده ها را دستکاری کنید یا حتی تغییرات کوچکی را اعمال کنید بدون آنکه منجر به تولید یک خروجی کاملا متفاوت شود. نام این فرآیند اثر بهمن است.
- الگوریتم های Hash مختلف : خانواده ها و الگوریتم های فردی زیادی وجود دارند که با سرعت های مختلف کار می کنند و هرکدام مخصوص اندازه های مختلفی از داده هستند. به عنوان مثال، SHA-256 دارای خروجی 256 بیت است (که معادل یک رشته 64 هگزا دسیمالی میباشد).
تابع هش یا توابع هش الگوریتمهای ریاضی هستند که دادهها را با اندازه و طول متغیر دریافت میکنند و به خروجی یکسان و قطعی تبدیلشان میکنند.
تابع هش به منظور رمزنگاری اطلاعات و تراکنشها و حفظ اطلاعات و امنیت یک شبکه بلاک چینی مورد استفاده قرار میگیرد.