به جلسۀ دیگری از دوره آموزش ارزهای دیجیتالی خوش آمدید. در این جلسه بر آن شدیم تا به جواب سؤال «هش چگونه کار میکند؟»، بپردازیم. با آکادمی کالج پیپس، بزرگترین مرجع تخصصی آموزش بازارهای مالی، همراه باشید.
[ez-toc]
در درس قبل، مفهوم Hashing و اصطلاحات مرتبط را معرفی کردیم. حالا بیایید ببینیم چگونه کار میکند!
Hashing، عملیاتی ریاضی است که انجام آن آسان است، اما انجام دادن برعکس آن بسیار دشوار.
فرآیند هش، یک قطعه داده را به کد دودویی تبدیل میکند که فقط به یک دسته از 0 و 1 ها تبدیل میشود.
سپس اعداد را تقسیم میکند و یک مقدار «به هم ریختگی » را اعمال میکند که توسط عملیاتی به نام «تابع هش» انجام میشود.
هش چگونه کار میکند؟
وقتی Hashing در بیتکوین و سایر ارزهای رمزنگاری شده استفاده میشود، نتیجۀ نهایی معمولاً یک رشته از اعداد و حروف به طول 64 کاراکتر است.
چون تبدیل توسط الگوریتم رمزنگاری (تابع هش) انجام میشود، فرمول به هم ریختگی نامعلوم است، بنابراین رشتۀ ۶۴ کاراکتری قابل بازگشت نیست.

یک رشته، یک دنباله از کاراکترها است.
رشتهها مانند جملات هستند؛ آنها توسط ترکیبی از کاراکترها ساخته میشوند.

یک هش را بهعنوان یک مجموعه از حروف و اعداد تصادفی تصور کنید.
یک قطعه منحصر به فرد از داده همیشه همان هش را تولید خواهد کرد.
بهعنوان مثال، هر بار که رشتۀ فوق از تابع درهمساز عبور داده شود، همیشه همان خروجی هش را تولید خواهد کرد.
اما اگر یک تغییر کوچک در رشته ایجاد کنیم چه اتفاقی میافتد؟ (هایلایت شده در تصویر زیر)

لازم به ذکر است که استفاده از هشها برای شناسایی دستکاریها مورد استفاده قرار میگیرد، زیرا حتی یک تغییر کوچک در ورودی تابع هش، منجر به خروجی کاملاً متفاوتی میشود. بسیار مهم است که این نکته را به یاد داشته باشید، زیرا در یک درس دیگر، خواهید دید که چگونه از این ویژگی برای جلوگیری از دستکاری در معاملات قبلی استفاده میشود.
تابع هش یک طرفه میباشد

هش یک طرفه است، یعنی نمیتوانید با داشتن خروجی آن، اطلاعات ورودی را به دست آورید. بنابراین اگر فقط هش را بدانید، راهی برای فهمیدن اطلاعات اصلی وجود ندارد.
طول خروجی (هش) وابسته به اندازۀ اطلاعات ورودی نیست. یک تابع درهمساز، دادههایی با هر اندازهای را به یک مقدار با طول ثابت تبدیل میکند.

اگر کل متن یکی از کتابهای هری پاتر با بیش از 76000 کلمه را وارد کنید، خروجی هش همچنان تنها 64 کاراکتر خواهد بود.
علاوه بر آن، اگر حتی یک حرف در متن کتاب را اشتباه تایپ کنید و آن را از تابع درهمساز عبور دهید، خروجی هش کاملاً متفاوتی نسبت به حالت قبل ایجاد میکند. این ویژگی به شما امکان میدهد تا بهسرعت و بدون نیاز به بررسی دستی کل کتاب، از هرگونه تغییر در آن مطلع شوید.