ماشین حساب کد هش CRC-32B
منتشر شده: ۱۷ فوریهٔ ۲۰۲۵ ساعت ۱۸:۳۱:۰۹ (UTC)
آخرین به روز رسانی: ۱۲ ژانویهٔ ۲۰۲۶ ساعت ۹:۱۶:۱۴ (UTC)
CRC-32B Hash Code Calculator
بررسی افزونگی چرخهای (CRC) یک کد تشخیص خطا است که معمولاً برای تشخیص تغییرات تصادفی در دادههای خام استفاده میشود. اگرچه از نظر فنی یک تابع هش رمزنگاری نیست، اما CRC-32 اغلب به دلیل تواناییاش در تولید خروجی با اندازه ثابت (32 بیت) از ورودی با طول متغیر، به عنوان هش شناخته میشود. نسخه ارائه شده در این صفحه، نوع CRC-32B است که در واقع فقط یک تغییر ناگهانی در زبان PHP است که بیتها را وارونه میکند (little-endian در مقابل big-endian در CRC-32 اصلی).
افشای کامل: من پیاده سازی خاصی از تابع هش مورد استفاده در این صفحه را ننوشتم. این یک تابع استاندارد است که در زبان برنامه نویسی PHP گنجانده شده است. من فقط رابط وب را ایجاد کردم تا برای راحتی در اینجا در دسترس عموم قرار دهم.
درباره الگوریتم هش 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 دیگری که از آن استفاده میکند نیاز دارید.
من برای انواع دیگر هم ماشین حساب دارم:
- پیوند
- پیوند
مطالعه بیشتر
اگر از این پست لذت بردید، ممکن است این پیشنهادات را نیز بپسندید:
