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