هش چیست؟#
تابع هش هر ورودی، چه یک کلمه و چه یک فایل چندگیگابایتی، را به رشتهای با طول ثابت تبدیل میکند که شبیه اثر انگشت آن داده است. ورودی یکسان همیشه خروجی یکسان میدهد؛ ولی تغییر یک حرف، خروجی را کاملاً متفاوت میکند.
ویژگیهای مهم#
- یکطرفه: از روی هش نمیشود ورودی را مستقیم بازسازی کرد.
- ثابت: ورودی مشابه، هش مشابه.
- حساس: تغییر کوچک، نتیجهی کاملاً متفاوت.
- تصادمناپذیر: پیدا کردن دو ورودی با هش یکسان باید عملاً غیرممکن باشد.
کاربردها#
- ذخیرهی رمز عبور: سایت درستحسابی خود رمز را نگه نمیدارد، هش آن را نگه میدارد. هنگام ورود، هش رمزی که وارد میکنید مقایسه میشود.
- بررسی صحت فایل: هش فایل دانلودشده با هش منتشرشده مقایسه میشود تا دستکاری یا خرابی مشخص شود.
- امضای دیجیتال و بلاکچین.
تفاوت با رمزنگاری#
رمزنگاری قابلبرگشت است؛ هش نیست. برای رمز عبور هم باید از الگوریتمهای مخصوص ذخیرهی رمز استفاده شود، نه هر هش سریع، چون سریعبودن برای حدسزدن به نفع مهاجم است.
برای کاربر#
اگر سایتی با «فراموشی رمز» خود رمز قبلیتان را برایتان میفرستد، یعنی رمز را ساده نگه داشته و این هشدار جدی است. رمزتان را برای هیچ سایتی تکرار نکنید.
برای توسعهدهنده#
در وردپرس و فریمورکهای مدرن توابع آمادهی ذخیرهی امن رمز وجود دارد؛ خودتان الگوریتم نسازید.