فحص التكرار الدوري

يُعدّ فحص التكرار الدوري ( CRC ) رمزًا لكشف الأخطاء، ويُستخدم عادةً في الشبكات الرقمية وأجهزة التخزين لاكتشاف التغييرات غير المقصودة في البيانات الرقمية. تُضاف قيمة فحص قصيرة إلى كتل البيانات الداخلة إلى هذه الأنظمة ، بناءً على باقي قسمة متعددة الحدود لمحتوياتها. عند استرجاع البيانات، تُعاد العملية الحسابية، وفي حال عدم تطابق قيم الفحص، يُمكن اتخاذ إجراءات تصحيحية لمعالجة تلف البيانات. يُمكن استخدام رموز CRC لتصحيح الأخطاء (انظر مرشحات البت ). [ 1 ]

تُسمى رموز التحقق الدورية (CRC) بهذا الاسم لأن قيمة التحقق (التحقق من البيانات) تُعدّ تكرارًا (فهي تُوسّع الرسالة دون إضافة معلومات )، وتعتمد الخوارزمية على الرموز الدورية . تحظى رموز التحقق الدورية بشعبية واسعة نظرًا لسهولة تنفيذها في الأجهزة الثنائية ، وسهولة تحليلها رياضيًا، وكفاءتها العالية في اكتشاف الأخطاء الشائعة الناتجة عن التشويش في قنوات الإرسال. ولأن قيمة التحقق لها طول ثابت، تُستخدم الدالة التي تُولّدها أحيانًا كدالة تجزئة .

مقدمة

تعتمد رموز تصحيح الأخطاء الدورية (CRCs) على نظرية رموز تصحيح الأخطاء الدورية . وقد اقترح دبليو ويسلي بيترسون لأول مرة في عام 1961 استخدام الرموز الدورية المنتظمة ، التي تُشفّر الرسائل بإضافة قيمة تحقق ثابتة الطول، لغرض اكتشاف الأخطاء في شبكات الاتصالات. [ 2 ] تتميز الرموز الدورية بسهولة تطبيقها، كما أنها ملائمة بشكل خاص لاكتشاف أخطاء الاندفاع : وهي عبارة عن تسلسلات متجاورة من رموز البيانات الخاطئة في الرسائل. وهذا أمر بالغ الأهمية لأن أخطاء الاندفاع شائعة في العديد من قنوات الاتصال ، بما في ذلك أجهزة التخزين المغناطيسية والبصرية. عادةً ما يكتشف رمز CRC ذو n بت، عند تطبيقه على كتلة بيانات ذات طول عشوائي، أي اندفاع خطأ منفرد لا يتجاوز n بت، وتكون نسبة اكتشافه لجميع اندفاعات الأخطاء الأطول تقريبًا (1 - 2 - n ) .

يتطلب تحديد رمز CRC تعريف ما يُسمى بمتعددة الحدود المولدة . تصبح هذه المتعددة الحدود هي القاسم في عملية القسمة المطولة ، حيث تُعتبر الرسالة هي المقسوم ، ويُهمل ناتج القسمة ، ويصبح الباقي هو النتيجة. والملاحظة المهمة هي أن معاملات متعددة الحدود تُحسب وفقًا لحسابات حقل منتهٍ ، لذا يمكن دائمًا إجراء عملية الجمع بالتوازي على مستوى البتات (لا يوجد ترحيل بين الأرقام).

عملياً، تستخدم جميع رموز التحقق الدوري الشائعة حقلًا منتهيًا مكونًا من عنصرين، GF(2) . ويُطلق على هذين العنصرين عادةً 0 و1، وهو ما يتوافق بشكل مريح مع بنية الحاسوب.

يُطلق على رمز التحقق الدوري (CRC) اسم رمز التحقق الدوري ذي n بت عندما يكون طول قيمة التحقق n بت. بالنسبة لقيمة n معينة ، يمكن أن يكون هناك عدة رموز تحقق دوري، لكل منها متعددة حدود مختلفة. تتميز متعددة الحدود هذه بأعلى درجة n ، مما يعني أنها تحتوي على n + 1 حدًا. بعبارة أخرى، يبلغ طول متعددة الحدود n + 1 ؛ ويتطلب ترميزها n + 1 بت. تجدر الإشارة إلى أن معظم مواصفات متعددات الحدود تتجاهل إما البت الأكثر أهمية (MSb) أو البت الأقل أهمية (LSb) ، لأنهما دائمًا ما يكونان 1. عادةً ما يكون لرمز التحقق الدوري ومتعددة الحدود المرتبطة به اسم على شكل CRC- n -XXX كما هو موضح في الجدول أدناه.

أبسط نظام للكشف عن الأخطاء، وهو بت التكافؤ ، هو في الواقع CRC ذو بت واحد: فهو يستخدم متعدد الحدود المولد x + 1 (مصطلحان)، [ 3 ] ويحمل اسم CRC-1. 

طلب

يقوم الجهاز المزود بتقنية CRC بحساب تسلسل ثنائي قصير وثابت الطول، يُعرف باسم قيمة التحقق أو CRC ، لكل كتلة من البيانات المراد إرسالها أو تخزينها، ثم يضيفها إلى البيانات، مما يشكل كلمة رمزية .

عند استلام أو قراءة كلمة رمزية، يقوم الجهاز إما بمقارنة قيمة التحقق الخاصة به مع قيمة تم حسابها حديثًا من كتلة البيانات، أو بشكل مكافئ، يقوم بإجراء CRC على الكلمة الرمزية بأكملها ويقارن قيمة التحقق الناتجة مع ثابت البقايا المتوقع .

إذا لم تتطابق قيم CRC، فإن الكتلة تحتوي على خطأ في البيانات.

قد يتخذ الجهاز إجراءً تصحيحيًا، مثل إعادة قراءة الكتلة أو طلب إعادة إرسالها. وإلا، يُفترض أن البيانات خالية من الأخطاء (مع ذلك، وباحتمال ضئيل، قد تحتوي على أخطاء غير مكتشفة؛ وهذا أمر متأصل في طبيعة التحقق من الأخطاء). [ 4 ]

سلامة البيانات

صُممت رموز التحقق من صحة البيانات (CRCs) خصيصًا للحماية من أنواع الأخطاء الشائعة في قنوات الاتصال، حيث توفر ضمانًا سريعًا ومعقولًا لسلامة الرسائل المُرسلة. مع ذلك، فهي غير مناسبة للحماية من التلاعب المتعمد بالبيانات.

أولًا، نظرًا لعدم وجود آلية مصادقة، يستطيع المهاجم تعديل الرسالة وإعادة حساب رمز التحقق الدوري (CRC) دون أن يُكتشف التعديل. وعند تخزين رموز التحقق الدوري (CRC) ودوال التجزئة المشفرة مع البيانات، فإنها لا توفر الحماية الكافية ضد التعديل المتعمد للبيانات. لذا، يجب على أي تطبيق يتطلب الحماية من هذه الهجمات استخدام آليات مصادقة تشفيرية، مثل رموز مصادقة الرسائل أو التوقيعات الرقمية (التي تعتمد عادةً على دوال التجزئة المشفرة ).

ثانيًا، على عكس دوال التجزئة المشفرة، فإن CRC دالة قابلة للعكس بسهولة، مما يجعلها غير مناسبة للاستخدام في التوقيعات الرقمية. [ 5 ]

ثالثًا، تحقق CRC علاقة مشابهة لتلك الخاصة بالدالة الخطية (أو بدقة أكبر، الدالة الأفينية ): [ 6 ]

CRC(xy)=CRC(x)CRC(y)ج{\displaystyle \operatorname {CRC} (x\oplus y)=\operatorname {CRC} (x)\oplus \operatorname {CRC} (y)\oplus c}

أينج{\displaystyle c}يعتمد ذلك على طولx{\displaystyle x}وy{\displaystyle y}ويمكن التعبير عن ذلك أيضاً على النحو التالي، حيثx{\displaystyle x}،y{\displaystyle y}وz{\displaystyle z}لها نفس الطول

CRC(xyz)=CRC(x)CRC(y)CRC(z)؛{\displaystyle \operatorname {CRC} (x\oplus y\oplus z)=\operatorname {CRC} (x)\oplus \operatorname {CRC} (y)\oplus \operatorname {CRC} (z);}

ونتيجة لذلك، حتى لو تم تشفير رمز التحقق الدوري (CRC) باستخدام تشفير تدفق يستخدم عملية XOR كعملية دمج (أو نمط تشفير كتلة يحوله فعليًا إلى تشفير تدفق، مثل OFB أو CFB)، فإنه يمكن التلاعب بكل من الرسالة ورمز التحقق الدوري المرتبط بها دون معرفة مفتاح التشفير؛ وكان هذا أحد عيوب التصميم المعروفة لبروتوكول الخصوصية المكافئة السلكية (WEP). [ 7 ]

حساب

لحساب CRC ثنائي مكون من n بت، قم بترتيب البتات التي تمثل المدخلات في صف واحد، وضع نمط ( n + 1 ) بت الذي يمثل قاسم CRC (يسمى " متعدد الحدود ") أسفل الطرف الأيسر من الصف.

في هذا المثال، سنقوم بتشفير رسالة مكونة من 14 بت باستخدام رمز التحقق الدوري (CRC) ذي 3 بتات، وذلك باستخدام متعددة الحدود + x + 1. تُكتب متعددة الحدود بالنظام الثنائي على شكل معاملات؛ متعددة الحدود من الدرجة الثالثة لها 4 معاملات ( 1x³ + 0x² + 1x + 1 ) . في هذه الحالة، المعاملات هي 1، 0، 1، و 1 . يبلغ طول نتيجة الحساب 3 بتات، ولذلك يُطلق عليها رمز التحقق الدوري ذي 3 بتات. مع ذلك، يلزم 4 بتات لتحديد متعددة الحدود بشكل صريح.

ابدأ بالرسالة المراد تشفيرها:

11010011101100 

يُضاف إلى هذه القيمة أولاً أصفارٌ تُساوي طول البتات n في رمز التحقق الدوري (CRC). ويتم ذلك لضمان أن تكون كلمة الترميز الناتجة مُنتظمة . إليك الحساب الأولي لحساب رمز التحقق الدوري (CRC) ذي 3 بتات:

11010011101100 000 <--- تم إضافة 3 بتات من اليمين إلى المدخلات 1011 <--- القاسم (4 بتات) = x^3 + x + 1 ------------------ 01100011101100 000 <--- النتيجة

تُطبّق الخوارزمية على البتات التي تعلو المقسوم عليه مباشرةً في كل خطوة. وتكون نتيجة هذه العملية هي عملية XOR الثنائية بين المقسوم عليه والبتات التي تعلوه. أما البتات التي لا تعلو المقسوم عليه، فتُنسخ ببساطة إلى أسفله مباشرةً في تلك الخطوة. ثم يُزاح المقسوم عليه إلى اليمين ليُحاذي أعلى بت متبقٍ قيمته 1 في المدخلات، وتُكرر العملية حتى يصل المقسوم عليه إلى نهاية يمين صف المدخلات. إليك الحساب الكامل:

11010011101100 000 <--- تم إضافة 3 بتات من اليمين إلى المدخلات 1011 <--- المقسوم عليه 01100011101100 000 <--- النتيجة (البتات الأربعة الأولى هي عملية XOR مع المقسوم عليه أدناه، أما باقي البتات فتبقى دون تغيير) 1011 <--- المقسوم عليه ... 00111011101100 000 1011 00010111101100 000 1011 00000001101100 000 <--- ينتقل المقسوم عليه ليتوافق مع الرقم 1 التالي في المقسوم (لأن ناتج القسمة في تلك الخطوة كان صفرًا) 1011 (بمعنى آخر، لا يتحرك بالضرورة بت واحد في كل تكرار) 00000000110100 000 1011 00000000011000 000 1011 00000000001110 000 1011 00000000000101 000 101 1 ----------------- 00000000000000 100 <--- الباقي (3 بتات). تتوقف خوارزمية القسمة هنا لأن المقسوم يساوي صفرًا. 

بما أن بتّ القاسم الأيسر يُصفّر كل بتّ إدخال يمرّ به، فعند انتهاء هذه العملية، تكون البتات الوحيدة في صف الإدخال التي يمكن أن تكون غير صفرية هي البتات n الموجودة في الطرف الأيمن من الصف. هذه البتات n هي باقي خطوة القسمة، وستكون أيضًا قيمة دالة التحقق من التكرار الدوري (CRC) (إلا إذا كانت مواصفات CRC المختارة تتطلب معالجة لاحقة).

يمكن التحقق بسهولة من صحة الرسالة المستلمة بإعادة إجراء العملية الحسابية المذكورة أعلاه، ولكن هذه المرة مع إضافة قيمة التحقق بدلاً من الأصفار. يجب أن يكون الباقي مساوياً للصفر في حال عدم وجود أخطاء قابلة للكشف.

11010011101100 100 <--- إدخال مع قيمة التحقق 1011 <--- المقسوم عليه 01100011101100 100 <--- النتيجة 1011 <--- المقسوم عليه ... 00111011101100 100 ...... 00000000001110 100 1011 00000000000101 100 101 1 ------------------ 00000000000000 000 <--- الباقي 

يوضح كود بايثون التالي دالةً تُعيد باقي التحقق من سلامة البيانات (CRC) الأولي لمدخلات متعددة الحدود مُختارة، مع إضافة 1 أو 0 كحشو أولي. يعمل هذا الكود مع المدخلات النصية وليس الأرقام الخام.

دالة crc_remainder ( سلسلة بتات الإدخال ، سلسلة بتات متعددة الحدود ، الحشو الأولي ): """حساب باقي CRC لسلسلة بتات باستخدام متعددة حدود مختارة.  يجب أن يكون الحشو الأولي '1' أو '0'.  """ سلسلة بتات متعددة الحدود = سلسلة بتات متعددة الحدود . lstrip ( "0" ) طول الإدخال = طول ( سلسلة بتات الإدخال ) الحشو الأولي = ( طول ( سلسلة بتات متعددة الحدود ) - 1 ) * الحشو الأولي مصفوفة الإدخال المحشوة = قائمة ( سلسلة بتات الإدخال + الحشو الأولي ) بينما "1" في مصفوفة الإدخال المحشوة [: طول الإدخال ]: الإزاحة الحالية = مصفوفة الإدخال المحشوة . index ( "1" ) for i in range ( len ( polynomial_bitstring )): input_padded_array [ cur_shift + i ] \ = str ( int ( polynomial_bitstring [ i ] != input_padded_array [ cur_shift + i ])) return "" . join ( input_padded_array )[ len_input :]دالة crc_check ( سلسلة بتات الإدخال ، سلسلة بتات متعددة الحدود ، قيمة التحقق ): """حساب قيمة التحقق CRC لسلسلة بتات باستخدام متعددة حدود مختارة.""" سلسلة بتات متعددة الحدود = سلسلة بتات متعددة الحدود . lstrip ( "0" ) طول الإدخال = طول ( سلسلة بتات الإدخال ) الحشو الأولي = قيمة التحقق مصفوفة الإدخال المحشوة = قائمة ( سلسلة بتات الإدخال + الحشو الأولي ) بينما "1" في مصفوفة الإدخال المحشوة [: طول الإدخال ]: الإزاحة الحالية = مصفوفة الإدخال المحشوة . index ( "1" ) for i in range ( len ( polynomial_bitstring )): input_padded_array [ cur_shift + i ] \ = str ( int ( polynomial_bitstring [ i ] != input_padded_array [ cur_shift + i ])) return ( "1" not in "" . join ( input_padded_array )[ len_input :])
>>> crc_remainder ( '11010011101100' , '1011' , '0' ) '100' >>> crc_check ( '11010011101100' , '1011' , '100' ) True

الرياضيات

يكشف التحليل الرياضي لهذه العملية الشبيهة بالقسمة عن كيفية اختيار قاسم يضمن خصائص جيدة لاكتشاف الأخطاء. في هذا التحليل، تُعتبر أرقام سلاسل البتات معاملاتٍ لكثير حدود في متغير ما وهي معاملات تنتمي إلى الحقل المنتهي GF(2) (الأعداد الصحيحة بتردد 2، أي إما صفر أو واحد)، بدلاً من الأعداد المألوفة. مجموعة كثيرات الحدود الثنائية هي حلقة رياضية .

تصميم كثيرات الحدود

يُعد اختيار متعدد الحدود المولد أهم جزء في تطبيق خوارزمية التحقق من التكرار الدوري (CRC). يجب اختيار متعدد الحدود لتعظيم قدرات اكتشاف الأخطاء مع تقليل احتمالات التصادم الإجمالية.

أهم سمة لكثير الحدود هي طوله (أكبر درجة (أس) + 1 لأي ​​حد في كثير الحدود)، وذلك بسبب تأثيره المباشر على طول قيمة التحقق المحسوبة.

أطوال كثيرات الحدود الأكثر استخدامًا هي 9 بتات (CRC-8)، و17 بتًا (CRC-16)، و33 بتًا (CRC-32)، و65 بتًا (CRC-64). [ 3 ]

يُطلق على رمز التحقق الدوري (CRC) اسم رمز التحقق الدوري ذي n بت عندما تكون قيمة التحقق الخاصة به n بت. بالنسبة لقيمة n معينة ، يمكن أن يكون هناك عدة رموز تحقق دوري، لكل منها متعددة حدود مختلفة. تكون أعلى درجة لمتعددة الحدود هذه n ، وبالتالي n + 1 حدًا (طول متعددة الحدود n + 1 ). أما الباقي فيكون طوله n . يُسمى رمز التحقق الدوري بالصيغة CRC- n -XXX.

يعتمد تصميم متعدد حدود CRC على أقصى طول إجمالي للكتلة المراد حمايتها (البيانات + بتات CRC)، وميزات الحماية من الأخطاء المطلوبة، ونوع الموارد اللازمة لتنفيذ CRC، بالإضافة إلى الأداء المطلوب. من المفاهيم الخاطئة الشائعة أن أفضل متعددات حدود CRC تُشتق إما من متعددات حدود غير قابلة للاختزال أو من متعددات حدود غير قابلة للاختزال مضروبة في العامل 1 + x ، مما يضيف إلى الكود القدرة على اكتشاف جميع الأخطاء التي تؤثر على عدد فردي من البتات. [ 8 ] في الواقع، يجب مراعاة جميع العوامل المذكورة أعلاه عند اختيار متعدد الحدود، وقد يؤدي ذلك إلى متعدد حدود قابل للاختزال. مع ذلك، سيؤدي اختيار متعدد حدود قابل للاختزال إلى نسبة معينة من الأخطاء التي لم يتم اكتشافها، نظرًا لوجود قواسم صفرية في حلقة القسمة . 

تكمن ميزة اختيار متعددة حدود أولية كمولد لرمز CRC في أن الرمز الناتج يتمتع بأقصى طول إجمالي للكتلة، بمعنى أن جميع الأخطاء المكونة من بت واحد ضمن طول تلك الكتلة لها بواقي مختلفة (تسمى أيضًا متلازمات )، وبالتالي، بما أن الباقي دالة خطية للكتلة، يمكن للرمز اكتشاف جميع الأخطاء المكونة من بتين ضمن طول تلك الكتلة.ر{\displaystyle r}إذا كانت درجة متعددة الحدود المولدة الأولية هي ، فإن أقصى طول إجمالي للكتلة هو2ر-1{\displaystyle 2^{r}-1}والرمز المرتبط به قادر على اكتشاف أي أخطاء أحادية البت أو ثنائية البت. [ 9 ] ومع ذلك، إذا استخدمنا متعدد الحدود المولدز(x)=ص(x)(1+x){\displaystyle g(x)=p(x)(1+x)}، أينص{\displaystyle p}هو كثير حدود أولي من الدرجةر-1{\displaystyle r-1}إذن، يكون الحد الأقصى لطول الكتلة الكلي هو2ر-1-1{\displaystyle 2^{r-1}-1}والبرنامج قادر على اكتشاف الأخطاء الفردية والمزدوجة والثلاثية وأي عدد فردي من الأخطاء.

متعدد الحدودز(x){\displaystyle g(x)}يمكن اختيار طرق تحليل أخرى لتحقيق التوازن بين أقصى طول إجمالي للكتلة وقدرة الكشف عن الأخطاء المطلوبة. تُعدّ رموز BCH فئةً قويةً من هذه كثيرات الحدود، وهي تشمل المثالين السابقين. بغض النظر عن خصائص اختزال كثير حدود المولد من الدرجة r ، إذا كان يتضمن الحد "+1"، فسيكون الرمز قادرًا على كشف أنماط الأخطاء المحصورة في نافذة من r بتات متجاورة. تُسمى هذه الأنماط "انفجارات الأخطاء". 

مواصفة

يصبح مفهوم رمز التحقق الدوري (CRC) كرمز لكشف الأخطاء معقدًا عندما يستخدمه مطور أو لجنة معايير لتصميم نظام عملي. وفيما يلي بعض هذه التعقيدات:

  • أحيانًا، تُضيف بعض التطبيقات نمط بتات ثابتًا إلى بداية سلسلة البتات المراد فحصها. يُفيد هذا الأمر عندما قد تُضيف أخطاء التوقيت بتات أصفار أمام الرسالة، وهو تغيير من شأنه أن يُبقي قيمة الفحص دون تغيير.
  • عادةً، ولكن ليس دائمًا، تُلحق عملية التنفيذ n بتًا من الأصفار ( حيث n هو حجم CRC) بتدفق البتات المراد فحصه قبل إجراء عملية القسمة متعددة الحدود. وقد تم توضيح هذه العملية بالتفصيل في مقالة "حساب CRC" . تكمن ميزة هذه الطريقة في أن باقي تدفق البتات الأصلي بعد إضافة قيمة الفحص يساوي صفرًا تمامًا، وبالتالي يمكن فحص CRC ببساطة عن طريق إجراء القسمة متعددة الحدود على تدفق البتات المُستلم ومقارنة الباقي بالصفر. ونظرًا لخاصيتي التجميع والتبديل لعملية XOR، يمكن للتطبيقات العملية التي تعتمد على الجداول الحصول على نتيجة مكافئة عدديًا لإضافة الأصفار دون الحاجة إلى إضافة أي أصفار بشكل صريح، وذلك باستخدام خوارزمية مكافئة وأسرع [ 8 ] تجمع بين تدفق بتات الرسالة والتدفق الذي يتم إخراجه من سجل CRC.
  • في بعض الأحيان، يقوم التنفيذ بعملية XOR لدمج نمط بت ثابت في باقي قسمة كثير الحدود.
  • ترتيب البتات: تعتبر بعض الأنظمة البت الأقل أهمية في كل بايت هو "الأول"، مما يعني أثناء القسمة متعددة الحدود أنه "الأيسر"، وهو ما يتعارض مع فهمنا المعتاد لمصطلح "الأقل أهمية". يكون هذا الاصطلاح منطقيًا عند التحقق من سلامة البيانات (CRC) عبر منفذ التسلسل في الأجهزة، لأن بعض اصطلاحات نقل البيانات الشائعة عبر منفذ التسلسل تُرسل البايتات بدءًا من البت الأقل أهمية.
  • ترتيب البايتات : في خوارزميات التحقق من التكرار الدوري متعددة البايتات، قد يحدث لبسٌ حول ما إذا كان البايت المُرسَل أولاً (أو المُخزَّن في البايت ذي العنوان الأدنى في الذاكرة) هو البايت الأقل أهمية (LSB) أم البايت الأكثر أهمية (MSB). على سبيل المثال، تقوم بعض خوارزميات التحقق من التكرار الدوري ذات 16 بت بتبديل بايتات قيمة التحقق.
  • حذف البت الأعلى رتبة من متعدد الحدود المقسوم عليه: بما أن البت الأعلى رتبة هو دائمًا 1، وبما أن CRC ذو n بت يجب أن يتم تعريفه بواسطة مقسوم عليه ( n + 1 ) بت يتجاوز سجل n بت ، فإن بعض الكتاب يفترضون أنه ليس من الضروري ذكر البت الأعلى رتبة للمقسوم عليه.
  • حذف البت ذي الرتبة الأدنى من كثير الحدود المقسوم عليه: بما أن البت ذي الرتبة الأدنى يساوي دائمًا 1، فإن مؤلفين مثل فيليب كوبمان يمثلون كثيرات الحدود مع الحفاظ على البت ذي الرتبة الأعلى، ولكن بدون البت ذي الرتبة الأدنى (البت ذي الرتبة الأعلى).x0{\displaystyle x^{0}}أو حد واحد). يرمز هذا الاصطلاح إلى متعددة الحدود كاملة بدرجتها في عدد صحيح واحد.

تعني هذه التعقيدات وجود ثلاث طرق شائعة للتعبير عن متعددة الحدود كعدد صحيح: الطريقتان الأوليان، وهما صورتان معكوسة في النظام الثنائي، هما الثوابت الموجودة في الشيفرة؛ أما الثالثة فهي العدد الموجود في أبحاث كوبمان. في كل حالة، يُحذف حد واحد. لذا فإن متعددة الحدودx4+x+1{\displaystyle x^{4}+x+1}يمكن نسخها على النحو التالي:

  • 0x3 = 0b0011، وهو ما يمثلx4+(0x3+0x2+1x1+1x0){\displaystyle x^{4}+(0x^{3}+0x^{2}+1x^{1}+1x^{0})}(رمز MSB أولاً)
  • 0xC = 0b1100، يمثل(1x0+1x1+0x2+0x3)+x4{\displaystyle (1x^{0}+1x^{1}+0x^{2}+0x^{3})+x^{4}}(رمز يبدأ بالبت الأقل أهمية)
  • 0x9 = 0b1001، وهو ما يمثل(1x4+0x3+0x2+1x1)+x0{\displaystyle (1x^{4}+0x^{3}+0x^{2}+1x^{1})+x^{0}}(تدوين كوبمان)

يتم عرضها في الجدول أدناه على النحو التالي:

أمثلة على تمثيلات CRC
اسمطبيعيمعكوسالمقلوب المعكوس
CRC-40x30xC0x9

التعتيم

قد يتم إخفاء رموز التحقق الدوري (CRC) في البروتوكولات الخاصة باستخدام قيمة أولية غير تافهة وعملية XOR نهائية، لكن هذه التقنيات لا تُدخل قوة تشفيرية في الخوارزمية ويمكن عكس هندستها باستخدام طرق مباشرة. [ 10 ]

المعايير والاستخدام الشائع

تم دمج العديد من أنواع فحوصات التكرار الدوري في المعايير التقنية . ولا يُناسب أي خوارزمية، أو أي خوارزمية من كل درجة، جميع الأغراض؛ إذ يوصي كوبمان وشاكرافارتي باختيار متعددة الحدود وفقًا لمتطلبات التطبيق والتوزيع المتوقع لأطوال الرسائل. [ 11 ] وقد أدى تعدد أنواع فحوصات التكرار الدوري (CRC) المستخدمة إلى إرباك المطورين، وهو وضع سعى المؤلفون إلى معالجته. [ 8 ] وهناك ثلاث متعددات حدود مُبلغ عنها لـ CRC-12، [ 11 ] واثنان وعشرون تعريفًا متضاربًا لـ CRC-16، وسبعة تعريفات لـ CRC-32. [ 12 ]

إنّ كثيرات الحدود الشائعة الاستخدام ليست بالضرورة الأكثر كفاءة. فمنذ عام ١٩٩٣، قام كوبمان وكاستانيولي وآخرون بدراسة فضاء كثيرات الحدود التي يتراوح حجمها بين ٣ و٦٤ بتًا، [ ١١ ] [ ١٣ ] [ ١٤ ] [ ١٥ ] ووجدوا أمثلةً ذات أداء أفضل بكثير (من حيث مسافة هامينغ لحجم رسالة مُحدد) من كثيرات الحدود المستخدمة في البروتوكولات السابقة، ونشروا أفضلها بهدف تحسين قدرة اكتشاف الأخطاء في المعايير المستقبلية. [ ١٤ ] وعلى وجه الخصوص، اعتمد كلٌّ من بروتوكول iSCSI وبروتوكول SCTP إحدى نتائج هذا البحث، وهي كثيرة حدود CRC-32C (كاستانيولي).

كان تصميم متعدد الحدود ذي 32 بت، الأكثر شيوعًا بين هيئات التقييس، CRC-32-IEEE، ثمرة جهد مشترك بين مختبر روما وقسم الأنظمة الإلكترونية التابع للقوات الجوية، قام به جوزيف هاموند وجيمس براون وشيان-شيانغ ليو من معهد جورجيا للتكنولوجيا ، وكينيث براير من شركة ميتري . ظهرت متعدد الحدود ذي 32 بت لأول مرة في منشوراتهم عام 1975: التقرير الفني رقم 2956 لبراير لصالح ميتري، والذي نُشر في يناير/كانون الثاني وأُتيح للنشر العام عبر مركز معلومات تكنولوجيا الدفاع (DTIC) في أغسطس/آب، [ 16 ] وتقرير هاموند وبراون وليو لصالح مختبر روما، والذي نُشر في مايو/أيار. [ 17 ] وقد تضمن كلا التقريرين مساهمات من الفريق الآخر. خلال شهر ديسمبر من عام 1975، قدم براير وهاموند بحثهما في مؤتمر IEEE الوطني للاتصالات: حيث تم اختيار متعددة الحدود IEEE CRC-32، وهي متعددة الحدود المولدة لرمز هامينغ ، لأدائها المتميز في كشف الأخطاء. [ 18 ] ومع ذلك، فإن متعددة الحدود Castagnoli CRC-32C المستخدمة في بروتوكولي iSCSI وSCTP تُضاهي أداءها في الرسائل التي تتراوح أحجامها من 58 بت إلى 131 كيلوبت، وتتفوق عليها في نطاقات أحجام متعددة، بما في ذلك الحجمين الأكثر شيوعًا لحزم الإنترنت. [ 14 ] كما يستخدم معيار ITU -T G.hn أيضًا CRC-32C لكشف الأخطاء في الحمولة (على الرغم من أنه يستخدم CRC-16-CCITT لرؤوس الطبقة الفيزيائية ).

تُنفَّذ عملية حساب CRC-32C في العتاد كعملية ( CRC32) ضمن مجموعة تعليمات SSE4.2 ، التي طُرحت لأول مرة في معمارية Nehalem الدقيقة لمعالجات Intel . كما توفر معمارية ARM AArch64 تسريعًا للعتاد لكلٍّ من عمليتي CRC-32 وCRC-32C.

التمثيلات متعددة الحدود

يسرد الجدول أدناه كثيرات الحدود الخاصة بالخوارزميات المختلفة المستخدمة فقط. قد تفرض اختلافات بروتوكول معين عمليات ما قبل الانعكاس، وما بعد الانعكاس، وترتيب البتات المعكوس كما هو موضح أعلاه. على سبيل المثال، يستخدم CRC-32 المستخدم في Gzip وBzip2 نفس كثيرة الحدود، لكن Gzip يستخدم ترتيب البتات المعكوس، بينما لا يستخدمه Bzip2. [ 12 ] لاحظ أن كثيرات الحدود ذات التكافؤ الزوجي في GF(2) من الدرجة الأكبر من 1 ليست أولية أبدًا. تمثل كثيرة الحدود ذات التكافؤ الزوجي التي تم وضع علامة عليها بأنها أولية في هذا الجدول كثيرة حدود أولية مضروبة في(x+1){\displaystyle \left(x+1\right)}. البت الأكثر أهمية في كثير الحدود هو دائمًا 1، ولا يظهر في التمثيلات السداسية العشرية.

اسمالاستخداماتالتمثيلات متعددة الحدودالتكافؤ [ 19 ]بدائي [ 20 ]الحد الأقصى لعدد بتات الحمولة حسب مسافة هامينغ [ 21 ] [ 14 ] [ 20 ]
طبيعيمعكوسمتبادلالمقلوب المعكوس 1615141312111098765432 [ 22 ]
CRC-1معظم الأجهزة؛ تُعرف أيضًا باسم بت التكافؤ0x10x10x10x1حتى
x+1{\displaystyle x+1}
CRC-3- GSMالشبكات المتنقلة [ 23 ]0x30x60x50x5غريبنعم [ 24 ]4
x3+x+1{\displaystyle x^{3}+x+1}
CRC-4-ITUITU-T G.704 ، ص  120x30xC0x90x9غريب
x4+x+1{\displaystyle x^{4}+x+1}
CRC-5-EPCالجيل الثاني من تقنية تحديد الهوية بموجات الراديو [ 25 ]0x090x120x050x14غريب
x5+x3+1{\displaystyle x^{5}+x^{3}+1}
CRC-5-ITUITU-T G.704 ، ص  90x150x150x0B0x1Aحتى
x5+x4+x2+1{\displaystyle x^{5}+x^{4}+x^{2}+1}
CRC-5-USBحزم رموز USB0x050x140x090x12غريب
x5+x2+1{\displaystyle x^{5}+x^{2}+1}
CRC-6- CDMA2000 -Aالشبكات المتنقلة [ 26 ]0x270x390x330x33غريب
CRC-6- CDMA2000 -Bالشبكات المتنقلة [ 26 ]0x070x380x310x23حتى
CRC-6-DARCقناة بيانات الراديو [ 27 ]0x190x260x0D0x2Cحتى
CRC-6- GSMالشبكات المتنقلة [ 23 ]0x2F0x3D0x3B0x37حتىنعم [ 28 ]112525
x6+x5+x3+x2+x+1{\displaystyle x^{6}+x^{5}+x^{3}+x^{2}+x+1}
CRC-6-ITUITU-T G.704 ، ص  30x030x300x210x21غريب
x6+x+1{\displaystyle x^{6}+x+1}
CRC-7أنظمة الاتصالات، ITU-T G.707 ، ITU-T G.832 ، MMC ، SD0x090x480x110x44غريب
x7+x3+1{\displaystyle x^{7}+x^{3}+1}
CRC-7-MVBشبكة اتصالات القطارات ، IEC 60870-5 [ 29 ]0x650x530x270x72غريب
CRC-8DVB-S2 [ 30 ]0xD50xAB0x570xEA [ 11 ]حتىلا [ 31 ]228585
x8+x7+x6+x4+x2+1{\displaystyle x^{8}+x^{7}+x^{6}+x^{4}+x^{2}+1}
CRC-8- أوتوسارالتكامل في مجال السيارات، [ 32 ] OpenSafety [ 33 ]0x2F0xF40xE90x97 [ 11 ]حتىنعم [ 31 ]33119119
x8+x5+x3+x2+x+1{\displaystyle x^{8}+x^{5}+x^{3}+x^{2}+x+1}
CRC-8- بلوتوثالاتصال اللاسلكي [ 34 ]0xA70xE50xCB0xD3حتى
x8+x7+x5+x2+x+1{\displaystyle x^{8}+x^{7}+x^{5}+x^{2}+x+1}
CRC-8- CCITTITU-T I.432.1 (02/99) ؛ ATM HEC ، و ISDN HEC، وتحديد الخلايا، و SMBus PEC0x070xE00xC10x83حتى
x8+x2+x+1{\displaystyle x^{8}+x^{2}+x+1}
CRC-8- دالاس / ماكسيمناقل 1-Wire [ 35 ]0x310x8C0x190x98حتى
x8+x5+x4+1{\displaystyle x^{8}+x^{5}+x^{4}+1}
CRC-8-DARCقناة بيانات الراديو [ 27 ]0x390x9C0x390x9Cغريب
x8+x5+x4+x3+1{\displaystyle x^{8}+x^{5}+x^{4}+x^{3}+1}
CRC-8- GSM -Bالشبكات المتنقلة [ 23 ]0x490x920x250xA4حتى
x8+x6+x3+1{\displaystyle x^{8}+x^{6}+x^{3}+1}
CRC-8- SAE J1850AES3 ؛ OBD0x1D0xB80x710x8Eغريب
x8+x4+x3+x2+1{\displaystyle x^{8}+x^{4}+x^{3}+x^{2}+1}
CRC-8- WCDMAالشبكات المتنقلة [ 26 ] [ 36 ]0x9B0xD90xB30xCD [ 11 ]حتى
x8+x7+x4+x3+x+1{\displaystyle x^{8}+x^{7}+x^{4}+x^{3}+x+1}
CRC-10جهاز الصراف الآلي؛ ITU-T I.6100x2330x3310x2630x319حتى
x10+x9+x5+x4+x+1{\displaystyle x^{10}+x^{9}+x^{5}+x^{4}+x+1}
CRC-10- CDMA2000الشبكات المتنقلة [ 26 ]0x3D90x26F0x0DF0x3ECحتى
CRC-10- GSMالشبكات المتنقلة [ 23 ]0x1750x2BA0x1750x2BAغريب
CRC-11فليكس راي [ 37 ]0x3850x50E0x21D0x5C2حتى
x11+x9+x8+x7+x2+1{\displaystyle x^{11}+x^{9}+x^{8}+x^{7}+x^{2}+1}
CRC-12أنظمة الاتصالات [ 38 ] [ 39 ]0x80F0xF010xE030xC07 [ 11 ]حتى
x12+x11+x3+x2+x+1{\displaystyle x^{12}+x^{11}+x^{3}+x^{2}+x+1}
CRC-12- CDMA2000الشبكات المتنقلة [ 26 ]0xF130xC8F0x91F0xF89حتى
CRC-12- GSMالشبكات المتنقلة [ 23 ]0xD310x8CB0x1970xE98غريب
CRC-13-BBCإشارة الوقت، مفتاح التحويل اللاسلكي [ 40 ] [ 41 ]0x1CF50x15E70x0BCF0x1E7Aحتى
x13+x12+x11+x10+x7+x6+x5+x4+x2+1{\displaystyle x^{13}+x^{12}+x^{11}+x^{10}+x^{7}+x^{6}+x^{5}+x^{4}+x^{2}+1}
CRC-14-DARCقناة بيانات الراديو [ 27 ]0x08050x28040x10090x2402حتى
CRC-14- GSMالشبكات المتنقلة [ 23 ]0x202D0x2D010x1A030x3016حتى
CRC-15- CAN0xC599 [ 42 ] [ 43 ]0x4CD10x19A30x62CCحتى
x15+x14+x10+x8+x7+x4+x3+1{\displaystyle x^{15}+x^{14}+x^{10}+x^{8}+x^{7}+x^{4}+x^{3}+1}
CRC-15- MPT1327[ 44 ]0x68150x540B0x28170x740Aغريب
CRC-16-Chakravartyالأمثل للأحمال ≤ 64 بت [ 29 ]0x2F150xA8F40x51E90x978Aغريب
CRC-16- ARINCتطبيقات ACARS [ 45 ]0xA02B0xD4050xA80B0xD015غريب
CRC-16-CCITTX.25 ، V.41 ، HDLC FCS ، XMODEM ، Bluetooth ، PACTOR ، SD ، DigRF ، وغيرها الكثير؛ والمعروفة باسم CRC-CCITT0x10210x84080x8110x8810 [ 11 ]حتى
x16+x12+x5+1{\displaystyle x^{16}+x^{12}+x^{5}+1}
CRC-16- CDMA2000الشبكات المتنقلة [ 26 ]0xC8670xE6130xCC270xE433غريب
CRC-16- DECTالهواتف اللاسلكية [ 46 ]0x05890x91A00x23410x82C4حتى
x16+x10+x8+x7+x3+1{\displaystyle x^{16}+x^{10}+x^{8}+x^{7}+x^{3}+1}
CRC-16- T10 - DIFSCSI DIF، NVMe (معلومات حماية الحماية 16 بت) [ 47 ]0x8BB7 [ 48 ]0xEDD10xDBA30xC5DBغريب
x16+x15+x11+x9+x8+x7+x5+x4+x2+x+1{\displaystyle x^{16}+x^{15}+x^{11}+x^{9}+x^{8}+x^{7}+x^{5}+x^{4}+x^{2}+x+1}
CRC-16- DNPDNP، IEC 870 ، M-Bus0x3D650xA6BC0x4D790x9EB2حتى
x16+x13+x12+x11+x10+x8+x6+x5+x2+1{\displaystyle x^{16}+x^{13}+x^{12}+x^{11}+x^{10}+x^{8}+x^{6}+x^{5}+x^{2}+1}
CRC-16- IBMBisync و Modbus و USB و ANSI X3.28 و SIA DC-07 وغيرها الكثير؛ والمعروفة أيضًا باسم CRC-16 و CRC-16-ANSI0x80050xA0010x40030xC002حتى
x16+x15+x2+1{\displaystyle x^{16}+x^{15}+x^{2}+1}
CRC-16- OpenSafety -Aناقل بيانات الأمان [ 33 ]0x59350xAC9A0x59350xAC9A [ 11 ]غريب
CRC-16- OpenSafety -Bناقل بيانات الأمان [ 33 ]0x755B0xDAAE0xB55D0xBAAD [ 11 ]غريب
CRC-16- بروفيبوسشبكات ناقل البيانات الميدانية [ 49 ]0x1DCF0xF3B80xE7710x8EE7غريب
فليتشر-16تُستخدم في مجموعات التحقق من Adler-32 A و Bكثيراً ما يُخلط بينه وبين رمز التحقق من التكرار الدوري (CRC)، ولكنه في الواقع رمز التحقق من المجموع الاختباري (checksum)؛ انظر رمز التحقق من المجموع الاختباري لفليتشر.
CRC-17-CANCAN FD [ 50 ]0x1685B0x1B42D0x1685B0x1B42Dحتى
CRC-21-CANCAN FD [ 50 ]0x1028990x1322810x0645030x18144Cحتى
CRC-24فليكس راي [ 37 ]0x5D6DCB0xD3B6BA0xA76D750xAEB6E5حتى
x24+x22+x20+x19+x18+x16+x14+x13+x11+x10+x8+x7+x6+x3+x+1{\displaystyle x^{24}+x^{22}+x^{20}+x^{19}+x^{18}+x^{16}+x^{14}+x^{13}+x^{11}+x^{10}+x^{8}+x^{7}+x^{6}+x^{3}+x+1}
CRC-24- Radix-64OpenPGP ، RTCM 104v30x864CFB0xDF32610xBE64C30xC3267Dحتى
x24+x23+x18+x17+x14+x11+x10+x7+x6+x5+x4+x3+x+1{\displaystyle x^{24}+x^{23}+x^{18}+x^{17}+x^{14}+x^{11}+x^{10}+x^{7}+x^{6}+x^{5}+x^{4}+x^{3}+x+1}
CRC-24- WCDMAيُستخدم في نظام التشغيل OS-9 RTOS . القيمة المتبقية = 0x800FE3. [ 51 ]0x8000630xC600010x8C00030xC00031حتىنعم [ 52 ]4483885838388583
x24+x23+x6+x5+x+1{\displaystyle x^{24}+x^{23}+x^{6}+x^{5}+x+1}
CRC-30CDMA0x2030B9C70x38E743010x31CE86030x30185CE3حتى
x30+x29+x21+x20+x15+x13+x12+x11+x8+x7+x6+x2+x+1{\displaystyle x^{30}+x^{29}+x^{21}+x^{20}+x^{15}+x^{13}+x^{12}+x^{11}+x^{8}+x^{7}+x^{6}+x^{2}+x+1}
CRC-32ISO 3309 ( HDLCANSI X3.66 ( ADCCPFIPS PUB 71، FED-STD-1003، ITU-T V.42 ، ISO/IEC/IEEE 802-3 ( إيثرنت )، ISO/IEC/IEEE 802-11 ( واي فايSATA ، MPEG-2 ، PKZIP ، Gzip ، Bzip2 ، PCI Express ، HDMI ، POSIX cksum ، [ 53 ] PNG ، [ 54 ] ZMODEM ، وغيرها الكثير0x04C11DB70xEDB883200xDB7106410x82608EDB [ 14 ]غريبنعم1012213457911712682974916074294967263
x32+x26+x23+x22+x16+x12+x11+x10+x8+x7+x5+x4+x2+x+1{\displaystyle x^{32}+x^{26}+x^{23}+x^{22}+x^{16}+x^{12}+x^{11}+x^{10}+x^{8}+x^{7}+x^{5}+x^{4}+x^{2}+x+1}
CRC-32C (كاستانيولي)iSCSI ، NVMe (معلومات الحماية 32 بت) [ 47 ] ، SCTP ، حمولة G.hn ، SSE4.2 ، Btrfs ، ext4 ، ReFS ، [ 55 ] VHDX ، [ 56 ] Ceph0x1EDC6F410x82F63B780x05EC76F10x8F6E37A0 [ 14 ]حتىنعم68204717752432147483615
x32+x28+x27+x26+x25+x23+x22+x20+x19+x18+x14+x13+x11+x10+x9+x8+x6+1{\displaystyle x^{32}+x^{28}+x^{27}+x^{26}+x^{25}+x^{23}+x^{22}+x^{20}+x^{19}+x^{18}+x^{14}+x^{13}+x^{11}+x^{10}+x^{9}+x^{8}+x^{6}+1}
CRC-32K (Koopman {1,3,28})ممتاز في التعامل مع طول إطار إيثرنت، أداء ضعيف مع الملفات الطويلة0x741B8CD70xEB31D82E0xD663B05D0xBA0DC66B [ 14 ]حتىلا24161815216360114663
x32+x30+x29+x28+x26+x20+x19+x17+x16+x15+x11+x10+x7+x6+x4+x2+x+1{\displaystyle x^{32}+x^{30}+x^{29}+x^{28}+x^{26}+x^{20}+x^{19}+x^{17}+x^{16}+x^{15}+x^{11}+x^{10}+x^{7}+x^{6}+x^{4}+x^{2}+x+1}
CRC-32K 2 (Koopman {1,1,30})ممتاز في التعامل مع طول إطار إيثرنت، أداء ضعيف مع الملفات الطويلة0x325834990x992C1A4C0x325834990x992C1A4C [ 14 ]حتىلا316261343273865506
CRC-32Qالطيران؛ AIXM [ 57 ]0x814141AB0xD58282810xAB0505030xC0A0A0D5حتى
x32+x31+x24+x22+x16+x14+x8+x7+x5+x3+x+1{\displaystyle x^{32}+x^{31}+x^{24}+x^{22}+x^{16}+x^{14}+x^{8}+x^{7}+x^{5}+x^{3}+x+1}
أدلر-32غالباً ما يُخلط بينه وبين رمز التحقق من التكرار الدوري (CRC)، ولكنه في الواقع رمز التحقق من المجموع الاختباري؛ انظر أدلر-32
CRC-40- GSMقناة التحكم GSM [ 58 ] [ 59 ] [ 60 ]0x00048200090x90004120000x20008240010x8002410004حتى
x40+x26+x23+x17+x3+1=(x23+1)(x17+x3+1){\displaystyle x^{40}+x^{26}+x^{23}+x^{17}+x^{3}+1=(x^{23}+1)(x^{17}+x^{3}+1)}
CRC-64- ECMAECMA-182 صفحة  51، XZ Utils0x42F0E1EBA9EA36930xC96C5795D7870F420x92D8AF2BAF0E1E850xA17870F5D4F51B49حتى
x64+x62+x57+x55+x54+x53+x52+x47+x46+x45+x40+x39+x38+x37+x35+x33+{\displaystyle x^{64}+x^{62}+x^{57}+x^{55}+x^{54}+x^{53}+x^{52}+x^{47}+x^{46}+x^{45}+x^{40}+x^{39}+x^{38}+x^{37}+x^{35}+x^{33}+}x32+x31+x29+x27+x24+x23+x22+x21+x19+x17+x13+x12+x10+x9+x7+x4+x+1{\displaystyle x^{32}+x^{31}+x^{29}+x^{27}+x^{24}+x^{23}+x^{22}+x^{21}+x^{19}+x^{17}+x^{13}+x^{12}+x^{10}+x^{9}+x^{7}+x^{4}+x+1}
CRC-64-ISOISO 3309 ( HDLCSwiss-Prot / TrEMBL ؛ تعتبر ضعيفة للتجزئة [ 61 ]0x000000000000001B0xD8000000000000000xB0000000000000010x800000000000000Dغريب
x64+x4+x3+x+1{\displaystyle x^{64}+x^{4}+x^{3}+x+1}
CRC-64-RocksoftNVMe (معلومات حماية الحماية 64 بت) [ 47 ]0xAD93D23594C936590x9A6C9329AC4BC9B50x34D926535897936B0xD6C9E91ACA649B2Cغريب
x64+x63+x61+x59+x58+x56+x55+x52+x49+x48+x47+x46+x44+x41+x37+x36+x34+x32+x31+x28+x26+x23+x22+x19+x16+x13+x12+x10+x9+x6+x4+x3+1{\displaystyle x^{64}+x^{63}+x^{61}+x^{59}+x^{58}+x^{56}+x^{55}+x^{52}+x^{49}+x^{48}+x^{47}+x^{46}+x^{44}+x^{41}+x^{37}+x^{36}+x^{34}+x^{32}+x^{31}+x^{28}+x^{26}+x^{23}+x^{22}+x^{19}+x^{16}+x^{13}+x^{12}+x^{10}+x^{9}+x^{6}+x^{4}+x^{3}+1}

التطبيقات

كتالوجات CRC

انظر أيضاً

مراجع

  1. "خوارزمية لتصحيح أخطاء التحقق من التكرار الدوري" . drdobbs.com . مؤرشف من الأصل في 20 يوليو 2017. تم الاطلاع عليه في 28 يونيو 2017 .
  2. بيترسون، دبليو دبليو؛ براون، دي تي (يناير 1961). "الرموز الدورية لكشف الأخطاء". وقائع معهد مهندسي الراديو . 49 (1): 228-235 . رمز Bibcode : 1961PIRE...49..228P . doi : 10.1109/JRPROC.1961.287814 . S2CID 51666741 . 
  3. 1 2 إرجين، مصطفى (21 يناير 2008). "2.3.3 ترميز كشف الأخطاء". النطاق العريض المتنقل . سبرينغر . ص 29-30 . doi : 10.1007/978-0-387-68192-4_2 . ISBN  978-0-387-68192-4.
  4. ريتر، تيري (فبراير 1986). "لغز CRC العظيم" . مجلة دكتور دوب . 11 (2): 26-34 ، 76-83 . مؤرشف من الأصل في 16 أبريل 2009. تم الاطلاع عليه في 21 مايو 2009 .
  5. ستيج، مارتن؛ بلوتز، هنريك؛ مولر، وولف؛ ريدليش، ينس-بيتر (مايو 2006). "عكس CRC - النظرية والتطبيق" ( ملف PDF) . جامعة هومبولت برلين. ص 17. SAR-PR-2006-05. مؤرشف من الأصل (ملف PDF) في 19 يوليو 2011. تم الاطلاع عليه في 4 فبراير 2011. توفر الطرق المعروضة وسيلة سهلة وفعالة للغاية لتعديل بياناتك بحيث يتم حسابها وفقًا لـ CRC الذي تريده أو على الأقل تعرفه مسبقًا. 
  6. "تصميم الخوارزمية - لماذا يُقال إن CRC خطي؟" . موقع Cryptography Stack Exchange . تم الاطلاع عليه بتاريخ 5 مايو 2019 .
  7. كام-وينجيت، نانسي؛ هاوسلي، روس؛ فاغنر، ديفيد؛ ووكر، جيسي (مايو 2003). "ثغرات أمنية في بروتوكولات ربط البيانات 802.11" ( ملف PDF) . مجلة اتصالات ACM . 46 (5): 35-39 . CiteSeerX 10.1.1.14.8775 . doi : 10.1145/769800.769823 . S2CID 3132937. مؤرشف (ملف PDF) من الأصل في 26 مايو 2013. تم الاطلاع عليه في 1 نوفمبر 2017 .  
  8. 1 2 3 ويليامز، روس ن. (24 سبتمبر 1996). "دليل مبسط لخوارزميات كشف أخطاء CRC الإصدار 3.0" . مؤرشف من الأصل في 2 أبريل 2018. تم الاطلاع عليه في 23 مايو 2019 .
  9. بريس، دبليو إتش؛ تيوكولسكي، إس إيه؛ فيترلينغ، دبليو تي؛ فلانيري، بي بي (2007). "القسم 22.4 التكرار الدوري ومجموعات التحقق الأخرى" . وصفات عددية: فن الحوسبة العلمية ( الطبعة الثالثة). مطبعة جامعة كامبريدج. ISBN  978-0-521-88068-8أُرشف من المصدر الأصلي بتاريخ 13 يوليو 2024. تم الاطلاع عليه بتاريخ 20 أغسطس 2024 .
  10. إيوينغ، غريغوري سي. (مارس 2010). "الهندسة العكسية لخوارزمية CRC" . كرايستشيرش: جامعة كانتربري. مؤرشف من الأصل في 7 أغسطس 2011. تم الاطلاع عليه في 26 يوليو 2011 .
  11. 1 2 3 4 5 6 7 8 9 10 كوبمان، فيليب؛ تشاكرافارتي، تريديب (يونيو 2004). "اختيار متعدد الحدود لرمز التكرار الدوري (CRC) للشبكات المدمجة". المؤتمر الدولي للأنظمة والشبكات الموثوقة، 2004 (ملف PDF) . الصفحات 145-154 . CiteSeerX 10.1.1.648.9080 . doi : 10.1109/DSN.2004.1311885 . ISBN   978-0-7695-2052-0S2CID 793862. مؤرشف (PDF) من الأصل بتاريخ 11 سبتمبر 2011. تم الاطلاع عليه بتاريخ 14 يناير 2011 . 
  12. 1 2 كوك، جريج (15 أغسطس 2020). "كتالوج خوارزميات CRC المُعَلمة" . مؤرشف من الأصل في 1 أغسطس 2020. تم الاسترجاع في 18 سبتمبر 2020 .
  13. كاستانيولي، ج.؛ براور، س.؛ هيرمان، م. (يونيو 1993). "تحسين رموز التحقق من التكرار الدوري باستخدام 24 و32 بتًا للتكافؤ". معاملات IEEE في الاتصالات . 41 (6): 883-892 . Bibcode : 1993ITCom..41..883C . doi : 10.1109/26.231911 .
  14. 1 2 3 4 5 6 7 8 كوبمان، فيليب (يوليو 2002). "رموز التكرار الدوري 32 بت لتطبيقات الإنترنت". وقائع المؤتمر الدولي للأنظمة والشبكات الموثوقة (ملف PDF) . الصفحات 459-468 . CiteSeerX 10.1.1.11.8323 . doi : 10.1109/DSN.2002.1028931 . ISBN   978-0-7695-1597-7S2CID 14775606. مؤرشف (PDF) من الأصل بتاريخ 16 سبتمبر 2012. تم الاطلاع عليه بتاريخ 14 يناير 2011 . 
  15. كوبمان، فيليب (21 يناير 2016). "أفضل كثيرات حدود CRC" . جامعة كارنيجي ميلون. مؤرشف من الأصل في 20 يناير 2016. تم الاطلاع عليه في 26 يناير 2016 .
  16. براير، كينيث (أغسطس 1975). تقييم كثيرات الحدود من الدرجة 32 في كشف الأخطاء على أنماط أخطاء SATIN IV Autovon (تقرير). الخدمة الوطنية للمعلومات التقنية . ADA014825. مؤرشف من الأصل في 31 ديسمبر 2021. تم الاسترجاع في 31 ديسمبر 2021 .
  17. هاموند، جوزيف ل. الابن؛ براون، جيمس إي.؛ ليو، شيان-شيانغ (1975). "تطوير نموذج خطأ الإرسال ونموذج التحكم في الخطأ" . تقرير ناسا الفني للاستطلاع/الاستخبارات رقم 76 ( نُشر في مايو 1975): 15344. رمز Bibcode : 1975STIN...7615344H . ADA013939. مؤرشف من الأصل في 31 ديسمبر 2021. تم الاسترجاع في 31 ديسمبر 2021 .
  18. براير، كينيث؛ هاموند، جوزيف ل. الابن (ديسمبر 1975). تقييم أداء متعدد الحدود لكشف الأخطاء على قناة AUTOVON . المؤتمر الوطني للاتصالات NTC 75 ، 1-3 ديسمبر 1975، نيو أورليانز، لويزيانا. المجلد 1. معهد مهندسي الكهرباء والإلكترونيات. الصفحات 8-21-5. رمز Bibcode : 1975ntc.....1....8B . OCLC 32688603. 75 CH 1015-7 CSCB.    
  19. تكتشف رموز التحقق الدوري (CRC) ذات التكافؤ الزوجي أي عدد فردي من أخطاء البتات، على حساب تقليل مسافة هامينغ للأحمال الطويلة. لاحظ أن التكافؤ يُحسب على كامل متعدد الحدود المولد، بما في ذلك الرقم 1 الضمني في البداية أو النهاية. على سبيل المثال، التمثيل الكامل لرمز CRC-1 هو 0x3، والذي يحتوي على بتتين قيمتهما 1. وبالتالي، فإن تكافؤه زوجي.
  20. 1 2 "32 بت CRC Zoo" . users.ece.cmu.edu . مؤرشف من الأصل في 19 مارس 2018. تم الاطلاع عليه في 5 نوفمبر 2017 .
  21. يشير مصطلح "الحمولة" إلى الطول باستثناء حقل CRC.تعني مسافة هامينغ التي تساوي d أنه يمكن اكتشاف d  −وتصحيح ⌊( d   
  22. يتم تحقيق ↑ دائمًا للرسائل الطويلة بشكل تعسفي
  23. 1 2 3 4 5 6 ETSI TS 100 909 (ملف PDF) . الإصدار 8.9.0. صوفيا أنتيبوليس، فرنسا: المعهد الأوروبي لمعايير الاتصالات. يناير 2005. مؤرشف (ملف PDF) من الأصل في 17 أبريل 2018. تم الاطلاع عليه في 21 أكتوبر 2016 .
  24. "3 Bit CRC Zoo" . users.ece.cmu.edu . مؤرشف من الأصل في 7 أبريل 2018. تم الاطلاع عليه في 19 يناير 2018 .
  25. بروتوكول UHF RFID من الجيل الثاني من الفئة الأولى (ملف PDF) . الإصدار 1.2.0. EPCglobal . 23 أكتوبر 2008. صفحة 35. مؤرشف (ملف PDF) من النسخة الأصلية بتاريخ 19 مارس 2012. تم الاطلاع عليه بتاريخ 4 يوليو 2012 . (الجدول 6.12)
  26. 1 2 3 4 5 6 معيار الطبقة الفيزيائية لأنظمة طيف الانتشار CDMA2000 (ملف PDF) . المراجعة د، الإصدار 2.0. مشروع شراكة الجيل الثالث 2. أكتوبر 2005. الصفحات 2-89 إلى 2-92. مؤرشف من الأصل (ملف PDF) بتاريخ 16 نوفمبر 2013. تم الاطلاع عليه بتاريخ 14 أكتوبر 2013 . 
  27. 1 2 3 "11. استراتيجية تصحيح الأخطاء". ETSI EN 300 751 (ملف PDF) . الإصدار 1.2.1. صوفيا أنتيبوليس، فرنسا: المعهد الأوروبي لمعايير الاتصالات. يناير 2003. الصفحات 67-68 . مؤرشف (ملف PDF) من الأصل في 28 ديسمبر 2015. تم الاطلاع عليه في 26 يناير 2016 . 
  28. "حديقة بيانات CRC ذات 6 بت" . users.ece.cmu.edu . مؤرشف من الأصل في 7 أبريل 2018. تم الاطلاع عليه في 19 يناير 2018 .
  29. 1 2 تشاكرافارتي، تريديب (ديسمبر 2001). أداء رموز التكرار الدوري للشبكات المدمجة (ملف PDF) (أطروحة). المشرف: فيليب كوبمان. جامعة كارنيجي ميلون. الصفحات 5، 18. مؤرشفة (ملف PDF) من الأصل في 1 يناير 2014. تم الاطلاع عليها في 8 يوليو 2013 . 
  30. "5.1.4 مُشفِّر CRC-8 (للتدفقات المُجزأة فقط)". EN 302 307 (ملف PDF) . الإصدار 1.3.1. صوفيا أنتيبوليس، فرنسا: المعهد الأوروبي لمعايير الاتصالات. مارس 2013. ص 17. مؤرشف (ملف PDF) من الأصل في 30 أغسطس 2017. تم الاطلاع عليه في 29 يوليو 2016 . 
  31. 1 2 "8 بت CRC Zoo" . users.ece.cmu.edu . مؤرشف من الأصل في 7 أبريل 2018. تم الاطلاع عليه في 19 يناير 2018 .
  32. "7.2.1.2 حساب CRC متعدد الحدود 0x2F ذو 8 بت". مواصفات إجراءات CRC (ملف PDF) . 4.2.2. ميونخ: AUTOSAR. 22 يوليو 2015. ص 24. مؤرشف من الأصل (ملف PDF) في 24 يوليو 2016. تم الاطلاع عليه في 24 يوليو 2016 . 
  33. 1 2 3 "5.1.1.8 حقل فحص التكرار الدوري (CRC-8 / CRC-16)". مواصفات ملف تعريف الأمان openSAFETY: مسودة اقتراح العمل EPSG رقم 304. 1.4.0. برلين: مجموعة توحيد معايير Ethernet POWERLINK. 13 مارس 2013. ص 42. مؤرشف من الأصل في 12 أغسطس 2017. تم الاطلاع عليه في 22 يوليو 2016 . 
  34. "B.7.1.1 جيل HEC". مواصفات نظام البلوتوث . المجلد 2. مجموعة بلوتوث الخاصة. 2 ديسمبر 2014. الصفحات 144-145 . مؤرشف من الأصل في 26 مارس 2015. تم الاطلاع عليه في 20 أكتوبر 2014 .  
  35. ويتفيلد، هاري (24 أبريل 2001). "XFCNs لحسابات فحص التكرار الدوري" . مؤرشف من الأصل في 25 مايو 2005.
  36. ريتشاردسون، أندرو (17 مارس 2005). دليل WCDMA . مطبعة جامعة كامبريدج. ص 223. ISBN  978-0-521-82815-4.
  37. 1 2 مواصفات بروتوكول FlexRay . 3.0.1. اتحاد Flexray. أكتوبر 2010. ص 114. (4.2.8 Header CRC (11 bits))
  38. بيريز، أ. (1983). "حسابات CRC على مستوى البايت". IEEE Micro . 3 (3): 40–50 . Bibcode : 1983IMicr...3c..40P . doi : 10.1109/MM.1983.291120 . S2CID 206471618 . 
  39. رامابادران، تي في؛ غايتوندي، إس إس (1988). "دليل تعليمي حول حسابات CRC". IEEE Micro . 8 (4): 62–75 . Bibcode : 1988IMicr...8d..62R . doi : 10.1109/40.7773 . S2CID 10216862 . 
  40. "فك تشفير بيانات الراديو طويلة الموجة باستخدام HC11 وMC3371" (ملف PDF) . شركة فريسكيل لأشباه الموصلات. 2004. AN1597/D. مؤرشف من النسخة الأصلية (ملف PDF) بتاريخ 24 سبتمبر 2015.
  41. إيلي، إس آر؛ رايت، دي تي (مارس 1982). بيانات الراديو منخفضة التردد: مواصفات البث التجريبي لهيئة الإذاعة البريطانية 1982 (ملف PDF) . قسم البحوث، شعبة الهندسة، هيئة الإذاعة البريطانية. ص 9. مؤرشف (ملف PDF) من الأصل في 12 أكتوبر 2013. تم الاطلاع عليه في 11 أكتوبر 2013 . 
  42. فحص التكرار الدوري (CRC): ورقة بيانات مكون PSoC Creator . شركة Cypress Semiconductor. 20 فبراير 2013. ص 4. مؤرشف من الأصل في 2 فبراير 2016. تم الاطلاع عليه في 26 يناير 2016 . 
  43. "فحص التكرار الدوري (CRC) في إطارات CAN" . CAN في الأتمتة . مؤرشف من الأصل في 1 فبراير 2016. تم الاسترجاع في 26 يناير 2016 .
  44. "3.2.3 التشفير والتحقق من الأخطاء". معيار الإشارة لأنظمة الراديو المتنقلة الأرضية الخاصة ذات الوصلات (MPT 1327) (ملف PDF) (الطبعة الثالثة ). أوفكوم . يونيو 1997. ص 3. مؤرشف (ملف PDF) من الأصل في 14 يوليو 2012. تم الاطلاع عليه في 16 يوليو 2012 .  
  45. ريمان، ألبرت؛ ميستر، خوسيه د. (فبراير 1995). "تقرير الاختبار الأولي لنظام الاتصالات والإبلاغ الجوي الأرضي VHF (ACARS)" (ملف PDF) . المركز الفني لهيئة الطيران الفيدرالية. ص 5. مؤرشف من الأصل (ملف PDF) في 2 أغسطس 2012. تم الاطلاع عليه في 7 يوليو 2012 . 
  46. "6.2.5 التحكم في الأخطاء". ETSI EN 300 175-3 (ملف PDF) . الإصدار 2.5.1. صوفيا أنتيبوليس، فرنسا: المعهد الأوروبي لمعايير الاتصالات. أغسطس 2013. الصفحات 99، 101. مؤرشف (ملف PDF) من الأصل في 1 يوليو 2015. تم الاطلاع عليه في 26 يناير 2016 . 
  47. 1 2 3 مواصفات مجموعة أوامر NVM Express (TM)
  48. ثالر، بات (28 أغسطس 2003). "اختيار متعدد الحدود CRC ذو 16 بت" (ملف PDF) . INCITS T10. مؤرشف (ملف PDF) من الأصل في 28 يوليو 2011. تم الاطلاع عليه في 11 أغسطس 2009 .
  49. "8.8.4 فحص ثمانية بتات (FCS)". مواصفات PROFIBUS، الأجزاء المعيارية (ملف PDF) . 1.0. المجلد 9. Profibus International. مارس 1998. صفحة 906. مؤرشف من الأصل (ملف PDF) في 16 نوفمبر 2008. تم الاطلاع عليه في 9 يوليو 2016 .  
  50. 1 2 CAN مع مواصفات معدل البيانات المرن (ملف PDF) . 1.0. شركة روبرت بوش المحدودة. 17 أبريل 2012. صفحة 13. مؤرشف من الأصل (ملف PDF) في 22 أغسطس 2013. (3.2.1 إطار البيانات)
  51. "دليل مبرمج نظام التشغيل OS-9" . roug.org . مؤرشف من الأصل بتاريخ 17 يوليو 2018. تم الاطلاع عليه بتاريخ 17 يوليو 2018 .
  52. كوبمان، فيليب ب. (20 مايو 2018). "24 بت CRC Zoo" . users.ece.cmu.edu . مؤرشف من الأصل في 7 أبريل 2018. تم الاطلاع عليه في 19 يناير 2018 .
  53. "cksum" . pubs.opengroup.org . مؤرشف من الأصل في 18 يوليو 2018. تم الاطلاع عليه في 27 يونيو 2017 .
  54. بوتيل، توماس؛ راندرز-بيرسون، غلين؛ وآخرون . (14 يوليو 1998). "مواصفات PNG (رسومات الشبكة المحمولة)، الإصدار 1.2" . Libpng.org. مؤرشف من الأصل في 3 سبتمبر 2011. تم الاطلاع عليه في 3 فبراير 2011 . 
  55. "تدفقات سلامة نظام الملفات ReFS" .
  56. " [ MS-VHDX ] : الهياكل" .
  57. دليل AIXM التمهيدي (ملف PDF) . 4.5. المنظمة الأوروبية لسلامة الملاحة الجوية . 20 مارس 2006. مؤرشف (ملف PDF) من الأصل في 20 نوفمبر 2018. تم الاطلاع عليه في 3 فبراير 2019 .
  58. ETSI TS 100 909 مؤرشف في 17 أبريل 2018 في Wayback Machine ، الإصدار 8.9.0 (يناير 2005)، القسم 4.1.2 أ
  59. غاميل، بيرندت م. (31 أكتوبر 2005). وثائق ماتباك: التشفير - الشفرات . Matpack.de. مؤرشف من الأصل في 25 أغسطس 2013. تم الاطلاع عليه في 21 أبريل 2013 .(ملاحظة: يتم تضمين ملف MpCRC.html مع شفرة المصدر المضغوطة لبرنامج Matpack، ضمن المسار /html/LibDoc/Crypto)
  60. جيريميا، باتريك (أبريل 1999). "حساب فحص التكرار الدوري: تطبيق باستخدام TMS320C54x" (ملف PDF) . شركة تكساس إنسترومنتس. ص 5. مؤرشف (ملف PDF) من الأصل في 14 يونيو 2012. تم الاطلاع عليه في 4 يوليو 2012 . 
  61. جونز، ديفيد ت. "فحص مُحسَّن للتكرار الدوري 64 بت لتسلسلات البروتين" (ملف PDF) . جامعة لندن. مؤرشف (ملف PDF) من الأصل في 7 يونيو 2011. تم الاطلاع عليه في 15 ديسمبر 2009 .

للمزيد من القراءة