هش چیست و چه ویژگیهایی دارد؟
تابع هش رمزنگاری، ورودی با هر طولی را به خروجی با طول ثابت تبدیل میکند؛ مثلاً SHA-256 همیشه ۲۵۶ بیت، یعنی ۶۴ نویسهٔ هگزادسیمال، تولید میکند، چه ورودی یک کلمه باشد چه یک فایل چندگیگابایتی. سه ویژگی آن را مفید میکند: ورودی یکسان همیشه هش یکسان میدهد؛ کوچکترین تغییر در ورودی، هش را کاملاً عوض میکند؛ و از روی هش نمیشود ورودی را به دست آورد.
هش با رمزنگاری فرق دارد. رمزنگاری دوطرفه است و با کلید میشود داده را برگرداند، اما هش یکطرفه است و کلیدی ندارد. با Base64 هم فرق دارد که فقط شکل نمایش را عوض میکند و بهراحتی برمیگردد. هش برای «اثبات یکسان بودن» ساخته شده است، نه برای پنهان کردن یا جابهجایی داده.
یک مثال ساده تفاوت را روشن میکند. اگر در ابزار کلمهٔ iranclaud را با iranclaud. مقایسه کنید، فقط یک نقطه اضافه شده اما هش SHA-256 دو متن هیچ شباهتی به هم ندارد. به این ویژگی «اثر بهمنی» میگویند و دلیل اصلی این است که هش برای تشخیص هر تغییر کوچک، حتی یک بیت خراب در فایل بکاپ، قابلاعتماد است.