
در درس قبل، به بررسی مفهوم هش و اصطلاحات مرتبط پرداختیم. اما هش چگونه کار می کند؟
هش یک عمل ریاضی است که اجرای آن آسان است اما برگرداندن هش برای دسترسی به داده بسیار سخت است.
در فرآیند هش، داده به کد باینری تبدیل میشود که دستهای از اعداد 0 و 1 است.
سپس اعداد تفکیک شده و آنها را به صورت مخفیانه در هم ترکیب میکند. این کار توسط تابع هش انجام میشود.
هش چگونه عمل میکند؟
زمانی که هش در بیت کوین و دیگر ارزهای دیجیتال استفاده میشود، نتیجه نهایی معمولا یک رشته طولانی 64 رقمی متشکل از اعداد و حروف است.
از آنجایی که تبدیل داده به هش توسط الگوریتم رمزنگاری (تابع هش) انجام میشود و خروجی آن یک ترکیب درهمریخته و نامفهوم است، در نتیجه رشته 64 رقمی قابل برگشت نیست.
رشته، دنبالهای از کاراکترهاست.
رشتهها مانند جملات هستند که با ترکیب کاراکترها شکل میگیرند.
هش چگونه کار می کند؟ هش را به عنوان دستهای از حروف و اعداد تصادفی در نظر بگیرید.
هر داده منحصر به فرد دارای هش ثابت است
به عنوان مثال، هر بار که رشته بالا از طریق تابع هش اجرا میشود، همیشه همان هش را تولید میکند.
اما چه اتفاقی میافتد اگر فقط یک تغییر کوچک در این رشته ایجاد کنیم؟ (با رنگ زرد مشخص شده است)
این بار جمله به جای نقطه با علامت سوال پایان مییابد.
با اینکه فقط یک تغییر کوچک در جمله ایجاد کردیم، هش کاملا تغییر کرد.
میتوانید ببینید که از هش میتوان برای تشخیص تغییر و دستکاری در داده اولیه استفاده کرد زیرا حتی یک تغییر کوچک در ورودی تابع هش، خروجی کاملا متفاوتی را به همراه دارد.
بسیار مهم است که این نکته را به خاطر داشته باشید زیرا در درس بعدی خواهید دید که چگونه از این روش برای جلوگیری از دستکاری در تراکنشهای قبلی استفاده میشود. هش چگونه کار می کند؟
تابع هش تنها یک طرفه عمل میکند
بیفایده است اگر سعی دارید هش موجود را معکوس کرده تا رشته ورودی را پیدا کنید.
بنابراین اگر هش تنها چیزی است که در اختیار دارید، هیچ راهی برای پیدا کردن و دانستن ورودی اصلی وجود ندارد. شما نمیتوانید از روش مهندسی معکوس استفاده کرده یا هش را هک کنید.
طول خروجی (“هش”)، با افزایش اطلاعات ورودی تغییری نمیکند. یک تابع هش، دادههای ورودی با هر اندازهای را میپذیرد و خروجی را با طول ثابت تولید میکند.
اگر کل متن کتاب هری پاتر را که بیش از 76000 کلمه است را در تابع هش به عنوان ورودی قرار دهید، خروجی هش همچنان 64 کاراکتر خواهد بود.
مجددا، اگر حتی یک حرف در کتاب هریپاتر را به اشتباه بنویسید و آن را از طریق تابع هش اجرا کنید، یک هش کاملا متفاوت دریافت میکنید.
با این قابلیت بدون اینکه مجبور باشید کل کتاب را به صورت دستی بررسی کنید، فورا متوجه میشوید که کتاب اصلاح شده است.
معرکه است نه؟