hashing (هشینگ) چیست؟

hashing (هشینگ) چیست؟

علی مرادی

Hashing تبدیل رشته ای از کاراکترها به یک مقدار معمولاً کوتاهتر یا کلید اصلی است که نشان دهنده رشته اصلی است. از hashing برای ایندکس کردن و بازیابی موارد در یک پایگاه داده استفاده می شود زیرا یافتن سریعتر مورد با استفاده از کلید هش کوتاهتر از یافتن آن با استفاده از مقدار اصلی سریعتر است. همچنین در بسیاری از الگوریتم های رمزگذاری استفاده می شود.

به عنوان نمونه ای ساده از استفاده از hashing در پایگاه داده ها ، گروهی از افراد می توانند در این پایگاه داده مانند این قرار بگیرند:

آبرناتی ، سارا اپپرینگل ، روسکو مور ، ویلفرد اسمیت ، دیوید (و بسیاری دیگر به ترتیب حروف الفبا طبقه بندی شده اند)

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

۷۸۶۴ آبرناتی ، سارا ۹۸۰۲ اپپرینگل ، روسکو ۱۹۹۰ مور ، ویلفرد ۸۸۲۲ اسمیت ، دیوید (و غیره)

جستجو برای هر نام ابتدا شامل محاسبه مقدار هش (استفاده از همان عملکرد هش برای ذخیره ی مورد) و سپس مقایسه یك مورد مشترک با استفاده از آن مقدار است. به طور کلی ، پیدا کردن یک اشتراک در چهار رقم بسیار سریعتر خواهد بود ، هرکدام تنها ۱۰ احتمال دارد ، از طول یک مقدار ارزش غیرقابل پیش بینی که هر شخصیت ۲۶ امکان دارد.

در ادامه با ما در شتابان هاست همراه باشید.

hashing (هشینگ) چیست؟

علاوه بر بازیابی سریعتر داده ها ، از هشن برای رمزگذاری و رمزگشایی امضاهای دیجیتالی نیز استفاده می شود (برای احراز هویت ارسال کنندگان پیام و گیرنده ها). امضای دیجیتالی با عملکرد هش تبدیل می شود و سپس هر دو مقدار هش (معروف به پیام digest) و امضا در انتقال جداگانه به گیرنده ارسال می شوند. با استفاده از همان عملکرد هش همانند فرستنده ، گیرنده یک پیام digest شده از امضا را استخراج می کند و آن را با پیام digest شده نیز دریافت می کند. (آنها باید یکسان باشد.)

از تابع هش برای فهرست بندی مقدار اصلی یا کلید استفاده می شود و سپس هر بار که داده های مرتبط با مقدار یا کلید بازیابی می شوند بعداً مورد استفاده قرار می گیرند. بنابراین ، هش کردن همیشه یک عمل یک طرفه است. نیازی به “مهندسی معکوس” عملکرد هش با تجزیه و تحلیل مقادیر هش نیست. در حقیقت ، با چنین تحلیلی نمی توان عملکرد هش ایده آل را بدست آورد. یک عملکرد هش خوب همچنین نباید از دو ورودی متفاوت یک مقدار هش یکسان تولید کند. اگر این کار را انجام دهد ، این به عنوان برخورد شناخته می شود. عملکردی هش که ریسک تصادف بسیار کمی را ارائه می دهد ممکن است قابل قبول تلقی شود.

در اینجا برخی از توابع هش نسبتاً ساده استفاده شده است:

  • روش تقسیم باقیمانده: اندازه تعداد اقلام موجود در جدول تخمین زده می شود. سپس این عدد بعنوان تقسیم کننده در هر مقدار اصلی یا کلید برای استخراج یک مقدار و باقی مانده استفاده می شود. باقی مانده مقدار هش شده است. (از آنجا که این روش می تواند تعدادی از تصادفات را ایجاد کند ، هر مکانیزم جستجو باید بتواند یک تصادف را تشخیص دهد و یک مکانیزم جستجوی متناوب را ارائه دهد.)
  • روش تاشو: این روش مقدار اصلی (رقم ها را در این حالت) به چند قسمت تقسیم می کند ، قطعات را به هم اضافه می کند و سپس از چهار رقم آخر (یا برخی دیگر از رقم های دلخواه دیگر که کار خواهد کرد) به عنوان مقدار hashed یا کلید استفاده می کند.
  • روش تبدیل Radix: در جایی که مقدار یا کلید دیجیتالی است ، می توان پایه شماره (یا ردیف) را تغییر داد که حاصل آن توالی متفاوت ارقام است. (به عنوان مثال ، یک کلید با شماره اعشاری می تواند به یک کلید شماره گذاری شده شش ضلعی تبدیل شود.) رقم های مرتبه بالا می توانند برای جاگذاری مقدار هش از طول یکنواخت دور شوند.
  • روش بازآرایی رقم: این به سادگی بخشی از مقدار اصلی یا کلید مانند رقم های موجود در موقعیت های ۳ تا ۶ را بدست می آورد ، ترتیب آنها را معکوس می کند و سپس از آن ترتیب ارقام به عنوان مقدار هش یا کلید استفاده می کند.

جمع بندی:

چندین عملکرد hashing مشهور وجود دارد که در رمزنگاری مورد استفاده قرار می گیرد. اینها شامل توابع هش پیام MD2 ، MD4 و MD5 است که برای هشدار امضاهای دیجیتالی به مقدار کمتری به نام پیام digest استفاده می شود ، و الگوریتم Secure Hash یا (SHA) ، الگوریتم استاندارد ، که بزرگتر می شود (۶۰- بیت) پیام digest است و شبیه MD4 است. با این وجود یک عملکرد هش که برای ذخیره سازی و بازیابی بانک اطلاعاتی مناسب است ، ممکن است برای اهداف رمزنگاری یا بررسی خطا کار نکند.

امیدوارم این مقاله برای شما مفید بوده باشد.

ما را در شتابان هاست دنبال کنید.