ماشین حساب کد هش Fowler-Noll-Vo FNV1a-32
منتشر شده: ۱۸ فوریهٔ ۲۰۲۵ ساعت ۰:۱۰:۱۱ (UTC)
آخرین به روز رسانی: ۱۲ ژانویهٔ ۲۰۲۶ ساعت ۱۳:۲۸:۳۲ (UTC)
Fowler-Noll-Vo FNV1a-32 Hash Code Calculator
تابع هش ۳۲ بیتی FNV-1a بخشی از خانواده توابع هش Fowler–Noll–Vo (FNV) است که برای هش سریع و در عین حال حفظ توزیع مناسب مقادیر هش طراحی شده است. این تابع معمولاً در برنامههایی مانند جداول هش، چکسامها و جستجوی دادهها استفاده میشود. این تابع یک کد هش ۳۲ بیتی (۴ بایتی) تولید میکند که اغلب به صورت یک عدد هگزادسیمال ۸ رقمی نمایش داده میشود.
نوع FNV-1a نسخه بهبود یافتهای نسبت به عملکرد اصلی FNV-1 با امنیت بهتر است.
افشای کامل: من پیاده سازی خاصی از تابع هش مورد استفاده در این صفحه را ننوشتم. این یک تابع استاندارد است که در زبان برنامه نویسی PHP گنجانده شده است. من فقط رابط وب را ایجاد کردم تا برای راحتی در اینجا در دسترس عموم قرار دهم.
درباره الگوریتم هش ۳۲ بیتی Fowler-Noll-Vo FNV-1a
من ریاضیدان نیستم، اما سعی میکنم این تابع هش را با استفاده از قیاسی توضیح دهم که همکاران غیر ریاضیدانم بتوانند آن را درک کنند. اگر یک توضیح علمی درست و ترسناک ریاضی را ترجیح میدهید، مطمئنم میتوانید آن را جای دیگری پیدا کنید ;-)
اول، بیایید الگوریتم FNV-1 را مانند دستور تهیه یک اسموتی مخصوص در نظر بگیریم. هر مادهای که اضافه میکنید (مانند میوهها، شیر یا عسل) نشان دهنده یک قطعه داده است - مانند حروف، اعداد یا حتی یک فایل کامل.
حالا، هدف این است که این مواد را به روشی بسیار خاص مخلوط کنیم، به طوری که حتی کوچکترین تغییر در دستور غذا (مانند اضافه کردن یک بلوبری اضافی) طعم اسموتی را کاملاً متفاوت کند. اینگونه است که توابع هش کار میکنند - آنها برای هر مجموعه منحصر به فرد از مواد تشکیل دهنده (یا داده ورودی) یک "طعم" (یا مقدار هش) منحصر به فرد ایجاد میکنند.
روشی که الگوریتم FNV-1 این کار را انجام میدهد، یک فرآیند چند مرحلهای است:
مرحله ۱: با یک پایه شروع کنید (مبنای افست)
این را مانند ریختن یک پایه اسموتی مخصوص در مخلوط کن خود در نظر بگیرید. این پایه همیشه یکسان است، مهم نیست چه موادی اضافه کنید. در FNV-1، به این "مبنای جبران" گفته میشود - فقط یک عدد شروع فانتزی.
مرحله ۲: اضافه کردن مواد اولیه یکی یکی (پردازش دادهها)
حالا شروع میکنید به اضافه کردن مواد اولیهتان، یکییکی - مثلاً یک توتفرنگی، بعد یک موز، بعد کمی عسل. هر کدام از اینها نشان دهندهی یک بایت داده هستند.
مرحله 3: با یک ضرب کننده مخفی (FNV Prime) ترکیب کنید
بعد از اضافه کردن هر ماده، دکمه مخلوط کردن را فشار میدهید، اما نکته اینجاست: مخلوطکن همه چیز را در یک «عدد جادویی» مخفی به نام عدد اول FNV ضرب میکند. این به مخلوط کردن خیلی خوب مواد کمک میکند.
مرحله ۴: اضافه کردن Dash of Magic (عملیات XOR)
قبل از اضافه کردن مادهی بعدی، کمی گرد جادویی روی آن میپاشید (این عملیات XOR است). این کار مانند تغییر طعم به روشهای غیرمنتظره است و تضمین میکند که حتی تغییرات کوچک نیز تفاوت بزرگی ایجاد میکنند.
مرحله ۵: تکرار تا اتمام کار
شما بعد از هر ماده جدید، به مخلوط کردن و پاشیدن جادو ادامه میدهید تا همه چیز را پردازش کنید.
مرحله 6: اسموتی نهایی (مقدار هش)
وقتی کارتان تمام شد، اسموتی را میریزید. طعم نهایی (مقدار هش) منحصر به همان ترکیب دقیق مواد تشکیلدهنده است. اگر حتی یک بلوبری اضافی اضافه کرده بودید، طعم آن کاملاً متفاوت میشد.
نسخه ارائه شده در اینجا نسخه بهبود یافته FNV-1a 32 بیتی است. اگر به نسخه اصلی نیاز دارید، من یک ماشین حساب برای آن هم دارم: لینک
مطالعه بیشتر
اگر از این پست لذت بردید، ممکن است این پیشنهادات را نیز بپسندید:
