Miklix

ماشین حساب کد هش Fowler-Noll-Vo FNV1-64

منتشر شده: ۱۷ فوریهٔ ۲۰۲۵ ساعت ۲۱:۳۵:۳۵ (UTC)
آخرین به روز رسانی: ۱۲ ژانویهٔ ۲۰۲۶ ساعت ۱۳:۲۶:۵۱ (UTC)

ماشین حساب کد هش که از تابع هش Fowler-Noll-Vo 1 64 bit (FNV1-64) برای محاسبه کد هش بر اساس ورودی متن یا آپلود فایل استفاده می‌کند.

این صفحه ماشینی از انگلیسی ترجمه شد تا در دسترس هر چه بیشتر مردم باشد. متأسفانه، ترجمه ماشینی هنوز یک فناوری کامل نشده است، بنابراین ممکن است خطاهایی رخ دهد. در صورت تمایل می توانید نسخه اصلی انگلیسی را در اینجا مشاهده کنید:

Fowler-Noll-Vo FNV1-64 Hash Code Calculator

تابع هش ۶۴ بیتی FNV-1 بخشی از خانواده توابع هش Fowler–Noll–Vo (FNV) است که برای هش سریع و در عین حال حفظ توزیع مناسب مقادیر هش طراحی شده است. این تابع معمولاً در برنامه‌هایی مانند جداول هش، چک‌سام‌ها و جستجوی داده‌ها استفاده می‌شود. این تابع یک کد هش ۶۴ بیتی (۸ بایتی) تولید می‌کند که اغلب به صورت یک عدد هگزادسیمال ۱۶ رقمی نمایش داده می‌شود.

افشای کامل: من پیاده سازی خاصی از تابع هش مورد استفاده در این صفحه را ننوشتم. این یک تابع استاندارد است که در زبان برنامه نویسی PHP گنجانده شده است. من فقط رابط وب را ایجاد کردم تا برای راحتی در اینجا در دسترس عموم قرار دهم.


هش کد جدید را محاسبه کنید

داده های ارسال شده یا فایل های آپلود شده از طریق این فرم تنها تا زمانی که برای تولید کد هش درخواستی طول می کشد، در سرور نگهداری می شوند. بلافاصله قبل از بازگرداندن نتیجه به مرورگر شما حذف می شود.

داده های ورودی:



متن ارسالی دارای کد UTF-8 است. از آنجایی که توابع هش بر روی داده‌های باینری کار می‌کنند، نتیجه متفاوت از زمانی است که متن در کدگذاری دیگری باشد. اگر نیاز به محاسبه هش یک متن در یک رمزگذاری خاص دارید، باید به جای آن یک فایل آپلود کنید.



درباره الگوریتم هش ۶۴ بیتی Fowler-Noll-Vo FNV-1

من ریاضیدان نیستم، اما سعی می‌کنم این تابع هش را با استفاده از قیاسی توضیح دهم که همکاران غیر ریاضیدانم بتوانند آن را درک کنند. اگر یک توضیح علمی درست و ترسناک ریاضی را ترجیح می‌دهید، مطمئنم می‌توانید آن را جای دیگری پیدا کنید ;-)

اول، بیایید الگوریتم FNV-1 را مانند دستور تهیه یک اسموتی مخصوص در نظر بگیریم. هر ماده‌ای که اضافه می‌کنید (مانند میوه‌ها، شیر یا عسل) نشان دهنده یک قطعه داده است - مانند حروف، اعداد یا حتی یک فایل کامل.

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

روشی که الگوریتم FNV-1 این کار را انجام می‌دهد، یک فرآیند چند مرحله‌ای است:

مرحله ۱: با یک پایه شروع کنید (مبنای افست)

این را مانند ریختن یک پایه اسموتی مخصوص در مخلوط کن خود در نظر بگیرید. این پایه همیشه یکسان است، مهم نیست چه موادی اضافه کنید. در FNV-1، به این "مبنای جبران" گفته می‌شود - فقط یک عدد شروع فانتزی.

مرحله ۲: اضافه کردن مواد اولیه یکی یکی (پردازش داده‌ها)

حالا شروع می‌کنید به اضافه کردن مواد اولیه‌تان، یکی‌یکی - مثلاً یک توت‌فرنگی، بعد یک موز، بعد کمی عسل. هر کدام از این‌ها نشان دهنده‌ی یک بایت داده هستند.

مرحله 3: با یک ضرب کننده مخفی (FNV Prime) ترکیب کنید

بعد از اضافه کردن هر ماده، دکمه مخلوط کردن را فشار می‌دهید، اما نکته اینجاست: مخلوط‌کن همه چیز را در یک «عدد جادویی» مخفی به نام عدد اول FNV ضرب می‌کند. این به مخلوط کردن خیلی خوب مواد کمک می‌کند.

مرحله ۴: اضافه کردن Dash of Magic (عملیات XOR)

قبل از اضافه کردن ماده‌ی بعدی، کمی گرد جادویی روی آن می‌پاشید (این عملیات XOR است). این کار مانند تغییر طعم به روش‌های غیرمنتظره است و تضمین می‌کند که حتی تغییرات کوچک نیز تفاوت بزرگی ایجاد می‌کنند.

مرحله ۵: تکرار تا اتمام کار

شما بعد از هر ماده جدید، به مخلوط کردن و پاشیدن جادو ادامه می‌دهید تا همه چیز را پردازش کنید.

مرحله 6: اسموتی نهایی (مقدار هش)

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

نسخه ارائه شده در اینجا نسخه اصلی ۶۴ بیتی FNV-1 است. همچنین یک نسخه بهبود یافته ۶۴ بیتی FNV-1a نیز موجود است: لینک

مطالعه بیشتر

اگر از این پست لذت بردید، ممکن است این پیشنهادات را نیز بپسندید:


در Bluesky به اشتراک بگذاریددر فیسبوک به اشتراک بگذاریددر لینکدین به اشتراک بگذاریددر Tumblr به اشتراک بگذاریددر X به اشتراک بگذاریددر لینکدین به اشتراک بگذاریدپین در پینترست

میکل کریستنسن

درباره نویسنده

میکل کریستنسن
مایکل خالق و صاحب miklix.com است. او بیش از 20 سال تجربه به عنوان یک برنامه نویس حرفه ای کامپیوتر / توسعه دهنده نرم افزار دارد و در حال حاضر به طور تمام وقت برای یک شرکت بزرگ فناوری اطلاعات اروپایی مشغول به کار است. هنگامی که وبلاگ نویسی نمی کند، اوقات فراغت خود را صرف مجموعه وسیعی از علایق، سرگرمی ها و فعالیت ها می کند، که ممکن است تا حدی در موضوعات مختلف پوشش داده شده در این وب سایت منعکس شود.