Miklix

ماشین حساب کد هش CRC-32B

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

ماشین حساب کد هش که از تابع هش CRC-32B (بررسی افزونگی چرخه‌ای ۳۲ بیتی، نوع B) برای محاسبه کد هش بر اساس ورودی متن یا آپلود فایل استفاده می‌کند.

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

CRC-32B Hash Code Calculator

بررسی افزونگی چرخه‌ای (CRC) یک کد تشخیص خطا است که معمولاً برای تشخیص تغییرات تصادفی در داده‌های خام استفاده می‌شود. اگرچه از نظر فنی یک تابع هش رمزنگاری نیست، اما CRC-32 اغلب به دلیل توانایی‌اش در تولید خروجی با اندازه ثابت (32 بیت) از ورودی با طول متغیر، به عنوان هش شناخته می‌شود. نسخه ارائه شده در این صفحه، نوع CRC-32B است که در واقع فقط یک تغییر ناگهانی در زبان PHP است که بیت‌ها را وارونه می‌کند (little-endian در مقابل big-endian در CRC-32 اصلی).

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


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

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

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



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



درباره الگوریتم هش CRC-32B

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

تصور کنید که نامه‌ای را از طریق پست ارسال می‌کنید، اما نگران هستید که قبل از رسیدن به گیرنده آسیب ببیند. بر اساس محتوای نامه، یک جمع کنترلی CRC-32 محاسبه می‌کنید و آن را روی پاکت می‌نویسید. وقتی گیرنده نامه را دریافت می‌کند، می‌تواند جمع کنترلی را نیز محاسبه کند و ببیند که آیا با آنچه شما نوشته‌اید مطابقت دارد یا خیر. اگر مطابقت داشته باشد، نامه در طول مسیر آسیب ندیده یا تغییر نکرده است.

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

مرحله ۱: اضافه کردن فضای اضافی (Padding)

  • CRC در انتهای پیام کمی فضای اضافی اضافه می‌کند (مثل بسته‌بندی بادام‌زمینی‌ها در یک جعبه).
  • این به آن کمک می‌کند تا خطاها را راحت‌تر تشخیص دهد.

مرحله ۲: خط‌کش جادویی (چندجمله‌ای)

  • CRC-32 از یک «خط‌کش جادویی» مخصوص برای اندازه‌گیری داده‌ها استفاده می‌کند. این خط‌کش را مانند الگویی از برآمدگی‌ها و شیارها در نظر بگیرید (این همان چندجمله‌ای است، اما نگران آن کلمه نباشید). رایج‌ترین «خط‌کش» برای CRC-32 یک الگوی ثابت است.

مرحله ۳: لغزاندن خط‌کش (فرآیند تقسیم)

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

مرحله ۴: نتیجه نهایی (چک‌سام)

  • پس از کشیدن خط‌کش روی کل پیام، یک عدد کوچک (به طول ۳۲ بیت) باقی می‌ماند که نشان‌دهنده‌ی داده‌های اصلی است. این عدد مانند اثر انگشت منحصر به فرد برای پیام است. این همان مجموع مقابله‌ای CRC-32 است.

نسخه ارائه شده در صفحه، نوع CRC-32B است که عمدتاً یک تغییر ناگهانی در PHP است که ترتیب بیت‌ها را تغییر می‌دهد (little-endian در مقابل big-endian). احتمالاً فقط در صورتی باید از این نسخه استفاده کنید که به طور خاص به سازگاری با برنامه PHP دیگری که از آن استفاده می‌کند نیاز دارید.

من برای انواع دیگر هم ماشین حساب دارم:

  • پیوند
  • پیوند

مطالعه بیشتر

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


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

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

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

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