مفهوم هش کردن چیست

خلاصه
1404/06/09

هشینگ (Hashing) یک فرآیند محاسباتی است که داده‌های ورودی با اندازه دلخواه را به یک خروجی با اندازه ثابت تبدیل می‌کند. این خروجی که به آن "هش"، "مقدار هش" یا "خلاصه پیام" گفته م

مفهوم هش کردن چیست

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

**به زبان ساده‌تر:**

تصور کنید یک ماشین خردکننده دارید که هر چیزی را (متن، تصویر، فایل و غیره) وارد آن کنید، آن را تبدیل به یک رشته کوتاه و منحصر به فرد از حروف و اعداد می‌کند. این رشته کوتاه، هش نام دارد.

**ویژگی‌های کلیدی هشینگ:**

* **قطعی بودن (Deterministic):** برای یک ورودی مشخص، همیشه یک هش یکسان تولید می‌شود.
* **یک طرفه بودن (One-way):** به دست آوردن ورودی اصلی از روی مقدار هش (به طور عملی) غیرممکن است. این ویژگی به عنوان "مقاومت در برابر پیش تصویر" (Preimage Resistance) نیز شناخته می‌شود.
* **مقاومت در برابر برخورد (Collision Resistance):** پیدا کردن دو ورودی مختلف که مقدار هش یکسانی داشته باشند، از نظر محاسباتی بسیار دشوار است. دو سطح از مقاومت در برابر برخورد وجود دارد:
* **مقاومت در برابر برخورد ضعیف (Weak Collision Resistance):** پیدا کردن ورودی دوم که با ورودی اول از قبل داده شده، مقدار هش یکسانی داشته باشد، دشوار است.
* **مقاومت در برابر برخورد قوی (Strong Collision Resistance):** پیدا کردن هر دو ورودی مختلف که مقدار هش یکسانی داشته باشند، دشوار است.
* **توزیع یکنواخت (Uniform Distribution):** الگوریتم‌های هشینگ خوب، مقادیر هش را به طور مساوی در بازه خروجی توزیع می‌کنند.

**کاربردهای هشینگ:**

* **ذخیره رمزهای عبور:** به جای ذخیره رمزهای عبور به صورت متن ساده، مقدار هش شده آن‌ها ذخیره می‌شود. هنگام ورود کاربر، رمز عبور وارد شده هش شده و با هش ذخیره شده مقایسه می‌شود.
* **بررسی یکپارچگی داده:** با هش کردن یک فایل، می‌توان مطمئن شد که فایل در طول انتقال یا ذخیره سازی تغییر نکرده است. اگر مقدار هش فایل اصلی با مقدار هش فایل دریافت شده یکسان باشد، فایل سالم است.
* **جستجوی سریع داده:** در ساختمان داده‌هایی مانند جداول هش، از هشینگ برای مکان‌یابی سریع داده‌ها استفاده می‌شود.
* **امضاهای دیجیتال:** هشینگ برای تولید خلاصه پیام مورد استفاده در امضاهای دیجیتال استفاده می‌شود.
* **رمزنگاری:** بعضی از الگوریتم‌های رمزنگاری از توابع هش استفاده می‌کنند.
* **تشخیص داده‌های تکراری:** می‌توان از هشینگ برای تشخیص فایل‌ها یا داده‌های تکراری در یک سیستم استفاده کرد.

**مثال‌ها از الگوریتم‌های هش:**

* **MD5:** یک الگوریتم قدیمی و آسیب‌پذیر که دیگر برای کاربردهای امنیتی توصیه نمی‌شود.
* **SHA-1:** مانند MD5، آسیب‌پذیر است و باید از آن اجتناب شود.
* **SHA-256:** یک الگوریتم پرکاربرد و ایمن برای بسیاری از کاربردها.
* **SHA-3:** یک الگوریتم جدیدتر که برای جایگزینی SHA-2 طراحی شده است.
* **bcrypt:** یک تابع هش برای رمزنگاری رمزهای عبور که به طور خاص برای مقاومت در برابر حمل