تصویر: الگوریتم هش ۳۲ بیتی FNV-1 - نمای کلی بصری

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

فلوچارت واضح و شفاف که مراحل اصلی الگوریتم هش ۳۲ بیتی FNV-1 را از بایت‌های ورودی تا نتیجه هش نهایی توضیح می‌دهد.


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

FNV-1 32-Bit Hash Algorithm – Visual Overview

فلوچارتی که نشان می‌دهد چگونه هش ۳۲ بیتی FNV-1 بایت‌های ورودی را با استفاده از مبنای آفست، XOR و ضرب پردازش می‌کند تا مقدار هش نهایی را تولید کند.

نسخه‌های موجود از این تصویر

فایل‌های تصویری که در زیر برای دانلود موجود است، نسبت به تصاویر موجود در مقالات و صفحات این وب‌سایت که برای کاهش مصرف پهنای باند، از نظر حجم فایل بهینه‌تر شده‌اند، فشرده‌سازی کمتری داشته و وضوح بالاتری دارند - و در نتیجه، کیفیت بالاتری دارند.

اندازه معمولی (1,536 x 1,024)

سایز بزرگ (3,072 x 2,048)

سایز بسیار بزرگ (4,608 x 3,072)

سایز فوق العاده بزرگ (6,144 x 4,096)

اندازه‌ی کمیک بزرگ (1,048,576 x 699,051)

  • هنوز در حال آپلود هستم... ;-)

شرح تصویر

تصویر، یک اینفوگرافیک عریض و افقی با عنوان «الگوریتم هش ۳۲ بیتی FNV-1» است که با متن تیره بزرگ در بالا نمایش داده شده است. سبک کلی آن تمیز، مسطح و آموزشی است و از مستطیل‌های گرد، دایره‌ها و فلش‌ها برای هدایت بیننده از چپ به راست استفاده می‌کند. پس‌زمینه سفید است و به نمودار ظاهری روشن و منظم و مناسب برای آموزش می‌دهد.

در سمت چپ یک مستطیل گرد آبی با برچسب «داده‌های ورودی» قرار دارد. در زیر این کادر، یک ردیف افقی کوچک از بلوک‌های چند رنگ وجود دارد که نشان‌دهنده بایت‌های داده هستند. یک فلش کوتاه از این کادر ورودی به سمت مرکز نمودار امتداد دارد که نشان‌دهنده شروع فرآیند هش کردن است.

در ادامه یک مستطیل گرد زرد رنگ با برچسب «مبنای آفست» قرار دارد که زیر آن عنوان کوچک‌تری با عنوان «مقدار ۳۲ بیتی» نوشته شده است. این کادر نشان‌دهنده‌ی حالت داخلی اولیه‌ای است که الگوریتم قبل از پردازش هرگونه بایت ورودی استفاده می‌کند. فلش از داده‌های ورودی به داخل این کادر مبنای آفست اشاره می‌کند و نشان می‌دهد که الگوریتم با این مقدار اولیه از پیش تعریف شده شروع می‌شود.

از مبنای آفست، جریان به یک گره دایره‌ای نارنجی با برچسب "XOR" ادامه می‌یابد. یک جفت آیکون بایت رنگی کوچک درست زیر این دایره قرار دارند که با عنوان "بایت ورودی" حاشیه‌نویسی شده‌اند و تأکید می‌کنند که هر بایت از داده‌های اصلی با حالت هش فعلی با استفاده از یک عملیات XOR بیتی ترکیب می‌شود. تصویر نشان می‌دهد که این مرحله XOR برای هر بایت تکرار می‌شود.

پس از مرحله XOR، یک فلش به یک گره دایره‌ای آبی رنگ اشاره می‌کند که با نماد ضرب مشخص شده است و از نظر مفهومی با عنوان "ضرب در FNV Prime" در بالای جریان مشخص شده است. این نشان می‌دهد که الگوریتم مقدار میانی را در یک عدد اول ثابت ضرب می‌کند تا بیت‌ها را بیشتر مخلوط کند و تغییرات را در سراسر هش پخش کند.

در سمت راست دایره ضرب، یک مستطیل گرد سبز با عنوان «نتیجه هش ۳۲ بیتی» قرار دارد. این نشان دهنده مقدار هش در حال تکامل پس از پردازش یک یا چند بایت و در نهایت هش ۳۲ بیتی نهایی تولید شده توسط الگوریتم پس از مصرف تمام داده‌های ورودی است.

بالای ردیف اصلی کادرها و دایره‌ها، یک خط افقی نازک با فلش‌های کوچک رو به پایین شامل متنی مانند «شروع با مبنای آفست»، «XOR با بایت»، «ضرب در عدد اول FNV» و «مقدار هش ۳۲ بیتی» است. این توضیحات به عنوان یک راهنمای گام به گام عمل می‌کنند که مراحل الگوریتم را به زبان ساده خلاصه می‌کند.

در پایین نمودار، یک فلش بلند از چپ به راست با متن «برای هر بایت داده تکرار کنید» کشیده شده است. این نشان می‌دهد که مراحل XOR و ضرب، حلقه‌ای را تشکیل می‌دهند که روی هر بایت در دنباله ورودی اعمال می‌شود، نه فقط یک عملیات واحد.

در مجموع، این نمودار از ثابت‌های عددی خاص اجتناب می‌کند و در عوض بر جریان مفهومی تمرکز دارد: بایت‌های ورودی وارد فرآیند می‌شوند، یک حالت داخلی مقداردهی اولیه می‌شود، هر بایت با مقدار فعلی XOR می‌شود، نتیجه ضرب می‌شود و این چرخه تا تولید هش ۳۲ بیتی نهایی تکرار می‌شود. استفاده از رنگ‌های متمایز برای هر مرحله، دنبال کردن الگوریتم را حتی برای مبتدیان آسان می‌کند.

تصویر مربوط به: ماشین حساب کد هش Fowler-Noll-Vo FNV1-32

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