ماشین حساب کد هش CRC-32C
منتشر شده: ۱۷ فوریهٔ ۲۰۲۵ ساعت ۱۸:۴۵:۳۷ (UTC)
ماشین حساب کد هش که از تابع هش CRC-32C (Cyclic Redundancy Check 32 bit, C variant) برای محاسبه کد هش بر اساس ورودی متن یا آپلود فایل استفاده می کند.CRC-32C Hash Code Calculator
بررسی افزونگی چرخه ای (CRC) یک کد تشخیص خطا است که معمولاً برای تشخیص تغییرات تصادفی داده های خام استفاده می شود. در حالی که از نظر فنی یک تابع هش رمزنگاری نیست، CRC-32 به دلیل توانایی آن در تولید خروجی با اندازه ثابت (32 بیت) از ورودی با طول متغیر، اغلب به عنوان هش نامیده می شود. نسخه ارائه شده در این صفحه، نوع CRC-32C است، که یک نسخه جدیدتر و "هوشمندتر" (تشخیص خطا بهتر) است که اغلب در CPUهای مدرن (از طریق SSE 4.2) به سخت افزار تسریع می شود.
افشای کامل: من پیاده سازی خاصی از تابع هش مورد استفاده در این صفحه را ننوشتم. این یک تابع استاندارد است که در زبان برنامه نویسی PHP گنجانده شده است. من فقط رابط وب را ایجاد کردم تا برای راحتی در اینجا در دسترس عموم قرار دهم.
درباره الگوریتم هش CRC-32C
من یک ریاضیدان نیستم، اما سعی می کنم این تابع هش را با یک قیاس ساده توضیح دهم. برخلاف بسیاری از توابع هش رمزنگاری، این یک الگوریتم پیچیده نیست، بنابراین احتمالاً مشکلی ندارد ;-)
تصور کنید نامهای را از طریق پست میفرستید، اما نگران هستید که قبل از رسیدن به دست گیرنده، آسیب ببیند. بر اساس محتوای نامه، یک CRC-32 را محاسبه میکنید و آن را روی پاکت مینویسید. هنگامی که گیرنده نامه را دریافت می کند، سپس می تواند مبلغ چک را نیز محاسبه کند و ببیند آیا با آنچه شما نوشته اید مطابقت دارد یا خیر. اگر اینطور باشد، نامه در طول مسیر آسیبی ندیده یا تغییر نکرده است.
روشی که CRC-32 این کار را انجام می دهد یک فرآیند چهار مرحله ای است:
مرحله 1: اضافه کردن مقداری فضای اضافی (بالشتک)
- CRC کمی فضای اضافی در انتهای پیام اضافه می کند (مانند بسته بندی بادام زمینی در یک جعبه).
- این به آن کمک می کند تا خطاها را راحت تر تشخیص دهد.
مرحله 2: خط کش جادویی (چند جمله ای)
- CRC-32 از یک "خط کش جادویی" ویژه برای اندازه گیری داده ها استفاده می کند.
- این خط کش را مانند الگوی برآمدگی ها و شیارها در نظر بگیرید (این چند جمله ای است، اما نگران آن کلمه نباشید).
- رایج ترین "خط کش" برای CRC-32 یک الگوی ثابت است.
مرحله 3: کشیدن خط کش (فرایند تقسیم)
- اکنون CRC خط کش را روی پیام می کشاند.
- در هر نقطه، بررسی می کند که آیا برآمدگی ها و شیارها در یک راستا قرار دارند.
- اگر در یک ردیف قرار نگیرند، CRC یادداشت میکند (این کار با استفاده از XOR ساده، مانند روشن یا خاموش کردن کلیدها انجام میشود).
- به لغزش و چرخاندن سوئیچ ها ادامه می دهد تا به انتهای آن برسد.
مرحله 4: نتیجه نهایی (چک جمع)
- پس از کشیدن خط کش در کل پیام، یک عدد کوچک (طول 32 بیت) برای شما باقی می ماند که نشان دهنده داده های اصلی است.
- این شماره مانند یک اثر انگشت منحصر به فرد برای پیام است.
- این چکسام CRC-32 است.
نسخه ارائه شده در صفحه، نوع CRC-32C است که باید نوع ارجح باشد، به خصوص اگر از CPU استفاده می کنید که دارای شتاب سخت افزاری است (SSE 4.2 و جدیدتر) و نیازی به سازگاری با انواع دیگر ندارید.
من ماشین حساب برای انواع دیگر نیز دارم: