کد افزونگی چرخشی: تفاوت میان نسخهها
محتوای حذفشده محتوای افزودهشده
جزبدون خلاصۀ ویرایش |
جز ←جایگزینی با [[وپ:اشتباه|اشتباهیاب]]: باازرشترین⟸با ازرشترین، سیآرسیها⟸CRCها، سیآرسیهای⟸CRCهای، پسپردازش⟸پس پردازش، کدنگار... |
||
خط ۱:
یک '''کد افزونگی دورهای''' {{انگلیسی|Cyclic redundancy check}} (سیآرسی) تابع درهمسازی غیرایمنی است که جهت تشخیص تغییرات تصادفی بر روی دادههای خام طراحی شدهاست. این تابع عموماً در شبکههای مخابراتی دیجیتال و وسایل ذخیرهسازی دادهها از جمله دیسک سخت مورد استفاده قرار میگیرد. یک دستگاه دارای قابلیت سیآرسی، یک توالی کوتاه و با طول ثابت را، به نام ''کد سیآرسی'' (یا فقط ''سیآرسی'')، برای هر بلاک از دادهها محاسبه نموده و آن را همراه با دادهها ذخیره یا ارسال میکند. زمانی که یک بلاک دریافت یا خوانده میشود دستگاه محاسبه را تکرار میکند؛ در صورت مغایرت با کد محاسبه شده قبلی مشخص میشود که این بلاک دارای ''خطای داده'' است و در این حالت دستگاه ممکن است عملی را جهت اصلاح خطا از جمله خواندن یا درخواست ارسال مجدد بلاک انجام دهد. اصطلاح سیآرسی میتواند به کد اعتبارسنج یا تابع تولید کد اطلاق شود.
== مقدمه ==
سیآرسی یک کد تشخیص خطا است. محاسبه آن شبیه عمل تقسیم اعشاری است که خارج قسمت حذف میشود و باقیمانده به عنوان نتیجه در نظر گرفته میشود، با این تفاوت مهم که محاسبات آن محاسبات بدون رقم نقلی از یک میدان محدود است. اعلام یک سیآرسی خاص با مشخص کردن مقسوم علیه و سایر مشخصات آن انجام میشود.
اگرچه
یک دلیل مهم برای محبوبیت
سادهترین سامانه تشخیص خطا، بیت زوجیت، در واقع یک سیآرسی عادی است که از مقسوم علیه دوبیتی ۱۱ استفاده میکند.
==
اغلب این فرض غلط وجود دارد که وقتی پیامی به همراه سیآرسی آن از یک کانال آزاد دریافت میشود و سیآرسی دریافتی با سیآرسی محاسبه شده مطابقت میکند پس پیام ممکن نیست در حین دریافت تغییر کرده باشد. این درست نیست چون هر دوی آنها میتوانند تغییر کرده باشند، به طوری که سیآرسی جدید با پیام جدید مطابقت کند؛ بنابراین
ایجاد پیامهای دیگری که همان سیآرسی را ایجاد کنند کار سادهای است، خصوصاً پیامهایی که بسیار شبیه پیام اصلی هستند. طبق طراحی پیامی که بسیار شبیه پیام اصلی است (و تفاوت آن تنها در یک الگوی تداخل تصادفی است) سیآرسی کاملاً متفاوتی خواهد داشت و بنابراین تشخیص داده خواهد شد.
خط ۳۸:
</pre>
از آنجایی که چپترین بیت مقسوم علیه در مواجه با هر بیت یک ورودی آن را صفر میکند، وقتی این روند پایان مییابد تنها بیتهای ورودی که میتوانند غیر صفر باشند آخرین n بیت سمت راست است. این n بیت، باقیمانده مرحله تقسیم است و البته همان مقدار تابع سیآرسی است (مگر آنکه تابع سیآرسی انتخابی شامل تعدادی
== مشخصات سیآرسی ==
خط ۴۶:
* یک پیادهسازی خاص ممکن است نتیجه را '''با یک الگوی ثابت XOR کند'''.
* '''ترتیب بیتها''': برخی روشها کمارزشترین بیت را نخست قرار میدهند و برخی بالعکس. ترتیب بیتها در سختافزارهای انتقال سریالی داده بسیار اهمیت دارد زیرا اکثر روشهای انتقال که به صورت وسیع استفاده میشوند از الگوی ابتدا-کمارزشترین-بیت استفاده میکنند.
* '''ترتیب بایتها''': در
* '''حذف باارزشترین بیت''' چندجملهای مقسم: از آنجایی که باارزشترین بیت همیشه یک است، و از آنجایی که یک سیآرسی nبیتی باید به صورت یک مقسوم علیه (n+1)بیتی تعریف شود و در این صورت میتواند از یک ثبات nبیتی سرریز میشود، برخی نویسندگان بیان بیت بالای مقسوم علیه را غیرضروری میدانند.
==
اگرچه
جدول زیر تنها شامل چندجملهایهای مورد استفاده در الگوریتمهای متداول است. همانطور که پیشتر توضیح داده شد هر پروتکل خاص میتواند دارای چینشهای بیت مختلفی باشد.
''توجه: در این جدول
{|class="wikitable"
خط ۱۸۰:
|}
* سیآرسی-۱۲۸ (IEEE)
* سیآرسی-۲۵۶ (IEEE)
خط ۱۹۴:
* [http://www.think-silicon.com/ipgenius.php?module=CRC_generator مولد رایگان مدار سیآرسی وریلاگ]
* [http://textop.us/Hashing/CRC محاسبه آنلاین سیآرسی۳۲ و سیآرسی۳۲بیتی (با استفاده از چندجملهای IEEE ۸۰۲٫۳)]
* [http://serversniff.net/crypt-checksum.php ابزاری برای محاسبه
* [http://www.paulschou.com/tools/xlate/ کدگشا و
[[رده:الگوریتمها]]
|