सीआरसी-32/आईएसओ-एचडीएलसी
PKZip · PNG · ईथरनेट
सबसे आम CRC-32 कार्यान्वयन, जिसे CRC-32b भी कहा जाता है। यह बहुपद 0x04C11DB7, अर्थात् 0xEDB88320 के प्रतिबिंबित रूप का उपयोग करता है। इनपुट बाइट्स और आउटपुट दोनों बिट-प्रतिबिंबित होते हैं (एलएसबी पहले), प्रारंभिक मूल्य और अंतिम एक्सओआर दोनों 0xFFFFFFFF पर सेट होते हैं।
ज़िप, जीज़िप, पीएनजी छवियों, ईथरनेट फ्रेम (आईईईई 802.3), पीकेसीएस#7 और कई विरासत प्रणालियों द्वारा व्यापक रूप से उपयोग किया जाता है। यह वास्तव में "डिफ़ॉल्ट CRC-32" संस्करण है।
| बहुपद | 0x04C11DB7 (सामान्य) / 0xEDB88320 (प्रतिबिंबित) |
| प्रारंभिक मूल्य | 0xFFFFFFFF |
| इनपुट प्रतिबिंब | हाँ (RefIn = सत्य) |
| आउटपुट रिफ्लेक्शन | हाँ (RefOut = true) |
| अंतिम XOR | 0xFFFFFFFF |
| मूल्य जांचें | 0xCBF43926 ("123456789" के लिए) |
सीआरसी-32सी/कास्टैग्नोली
iSCSI · NVMe · SCTP
1993 में जी. कास्टागनोली और सहकर्मियों द्वारा प्रस्तावित, यह संस्करण बहुपद 0x1EDC6F41 (प्रतिबिंबित रूप 0x82F63B78) का उपयोग करता है। समान हैमिंग दूरी पर, यह ISO-HDLC बहुपद की तुलना में अधिक मजबूत बर्स्ट-त्रुटि पहचान प्रदान करता है।
हार्डवेयर त्वरण Intel SSE4.2 और ARM CRC32 निर्देशों के माध्यम से उपलब्ध है। इसका व्यापक रूप से आधुनिक भंडारण और परिवहन प्रोटोकॉल जैसे कि iSCSI, NVMe, Btrfs और SCTP में उपयोग किया जाता है।
| बहुपद | 0x1EDC6F41 (सामान्य) / 0x82F63B78 (प्रतिबिंबित) |
| प्रारंभिक मूल्य | 0xFFFFFFFF |
| इनपुट रिफ्लेक्शन | हां (RefIn = true) |
| आउटपुट रिफ्लेक्शन | हाँ (RefOut = true) |
| अंतिम XOR | 0xFFFFFFFF |
| मूल्य जांचें | 0xE3069283 ("123456789" के लिए) |
सीआरसी-32/एमपीईजी-2
MPEG-2 · डीवीबी · एटीएससी
ISO-HDLC के समान 0x04C11DB7 बहुपद का उपयोग करता है, लेकिन न तो इनपुट और न ही आउटपुट बिट-प्रतिबिंबित (MSB प्रथम, बिग-एंडियन) है। प्रारंभिक मान 0xFFFFFFFF है और अंतिम XOR अक्षम है (XorOut = 0x00000000)।
मुख्य रूप से MPEG-2 ट्रांसपोर्ट स्ट्रीम (PAT, PMT, NIT और संबंधित टेबल) में PSI/SI तालिकाओं के लिए उपयोग किया जाता है, साथ ही DVB और ATSC प्रसारण प्रणालियों में अखंडता जांच के लिए भी उपयोग किया जाता है।
| बहुपद | 0x04C11DB7 |
| प्रारंभिक मूल्य | 0xFFFFFFFF |
| इनपुट रिफ्लेक्शन | नहीं (RefIn = false) |
| आउटपुट रिफ्लेक्शन | नहीं (RefOut = false) |
| अंतिम XOR | 0x00000000 (अक्षम) |
| मूल्य जांचें | 0x0376E6E7 ("123456789" के लिए) |
सीआरसी-32/बीज़िप2
BZip2 · AAL5 · DECT
इसके पैरामीटर लगभग MPEG-2 (बहुपद 0x04C11DB7, कोई प्रतिबिंब नहीं, प्रारंभिक मान 0xFFFFFFFF) के समान हैं। एकमात्र अंतर 0xFFFFFFFF के साथ अंतिम XOR है, जो हर बिट में फ़्लिप होता है। इसे CRC-32/AAL5 या CRC-32/DECT-B के नाम से भी जाना जाता है।
BZip2 संपीड़ित फ़ाइल प्रारूप और एटीएम AAL5 प्रोटोकॉल के ट्रेलर चेकसम फ़ील्ड द्वारा उपयोग किया जाता है।
| बहुपद | 0x04C11DB7 |
| प्रारंभिक मूल्य | 0xFFFFFFFF |
| इनपुट रिफ्लेक्शन | नहीं (RefIn = false) |
| आउटपुट रिफ्लेक्शन | नहीं (RefOut = false) |
| अंतिम XOR | 0xFFFFFFFF |
| मूल्य जांचें | 0xFC891918 ("123456789" के लिए) |
यूटीएफ-8 पाठ
डिफ़ॉल्ट · सामान्य
इनपुट को UTF-8 स्ट्रिंग के रूप में मानता है, इसे बाइट्स में परिवर्तित करता है, और फिर CRC32 की गणना करता है। यह सादे पाठ, स्रोत कोड, JSON और समान सामग्री के लिए सबसे आम मोड है।
नोट: GBK या UTF-16 जैसे भिन्न वर्ण सेट के साथ एन्कोड किया गया एक ही पाठ एक अलग बाइट स्ट्रीम उत्पन्न करता है और इसलिए एक अलग CRC32 मान उत्पन्न करता है। यह टूल हमेशा UTF-8 का उपयोग करता है.
| के लिए सर्वश्रेष्ठ | सादा पाठ, स्रोत कोड, JSON, XML |
| उदाहरण | "हैलो" → 48 65 6C 6C 6F (5 बाइट्स) |
| CJK वर्ण | अधिकांश CJK वर्ण UTF-8 में 3 बाइट्स का उपयोग करते हैं |
हेक्साडेसिमल
बाइनरी डेटा · प्रोटोकॉल फ्रेम्स
इनपुट को कच्चे हेक्साडेसिमल बाइट अक्षर के रूप में मानता है। रिक्त स्थान और लाइन ब्रेक को नजरअंदाज कर दिया जाता है। प्रत्येक दो हेक्स अक्षर एक बाइट (00–FF) बन जाते हैं।
तब उपयोगी जब आपको सटीक बाइनरी डेटा जैसे नेटवर्क फ्रेम, फर्मवेयर छवि टुकड़े, या मेमोरी डंप के लिए सीआरसी जांच की आवश्यकता होती है। आप वायरशार्क या हेक्स डंप आउटपुट को सीधे पेस्ट कर सकते हैं।
| प्रारूप | केवल 0-9 और a-f / A-F की अनुमति है |
| वर्ण गणना | सम होना चाहिए (2 अक्षर प्रति बाइट) |
| उदाहरण | 48656C6C6F = "हैलो" (5 बाइट्स) |
| व्हाइटस्पेस | स्वचालित रूप से अनदेखा किया गया। 48 65 6C 48656C |
के समान है
बेस64
एन्कोडेड बाइनरी · प्रमाणपत्र · छवियाँ
इनपुट को Base64-एन्कोडेड स्ट्रिंग के रूप में मानता है, इसे कच्चे बाइट्स में डिकोड करता है, और फिर CRC32 की गणना करता है। पीईएम प्रमाणपत्र, जेडब्ल्यूटी पेलोड, डेटा यूआरआई और अन्य बेस 64 सामग्री के लिए उपयोगी।
मानक बेस 64 वर्णमाला (ए-जेड ए-जेड 0-9 + /) का समर्थन करता है। पैडिंग वर्ण = वैकल्पिक है। URL-सुरक्षित Base64 ( - _ ) समर्थित नहीं है।
| वर्णमाला | A-Z a-z 0-9 + / = |
| उदाहरण | SGVsbG8= → "हैलो" (5 बाइट्स) |
| URL-सुरक्षित | समर्थित नहीं। -→+ और _→/ पहले |
बदलें
| ⚠ 1 कैरेक्टर | अमान्य - 6 बिट्स 1 बाइट बनाने के लिए पर्याप्त नहीं हैं (8 बिट्स आवश्यक हैं) |
| 2 अक्षर | डिकोड 1 बाइट (न्यूनतम मान्य इनपुट) |
| 3 अक्षर | डिकोड 2 बाइट्स |
| 4 अक्षर | डिकोड 3 बाइट्स (पैटर्न हर 4 अक्षर दोहराता है) |
हेक्साडेसिमल
सर्वाधिक सामान्य · डिफ़ॉल्ट
मान को 8-अंकीय अपरकेस हेक्साडेसिमल संख्या के रूप में प्रदर्शित करता है जिसके पहले 0x लगा होता है। प्रत्येक वर्ण कुल 32 बिट्स के लिए 4 बिट्स का प्रतिनिधित्व करता है। यह अधिकांश टूल, स्रोत कोड और दस्तावेज़ीकरण में उपयोग किया जाने वाला मानक प्रारूप है।
दशमलव आउटपुट की तुलना में, हेक्साडेसिमल बाइट सीमाओं का निरीक्षण करना आसान बनाता है और मेमोरी डंप और प्रोटोकॉल फ़ील्ड को अधिक स्वाभाविक रूप से मेल खाता है।
| उदाहरण | 0xCBF43926 |
| लंबाई | 8 हेक्साडेसिमल अक्षर = 32 बिट्स |
| बेस | बेस 16 (0-9, ए-एफ) |
| के लिए सर्वश्रेष्ठ | कोड, दस्तावेज़ीकरण, वायरशार्क, हेक्स संपादक |
दशमलव
अहस्ताक्षरित 32-बिट पूर्णांक
चेकसम को 0–4,294,967,295 (2³²−1) की सीमा में अहस्ताक्षरित 32-बिट दशमलव पूर्णांक के रूप में प्रदर्शित करता है। कुछ भाषाएँ और उपकरण दशमलव रूप में सीआरसी मानों की तुलना करते हैं, और डेटाबेस फ़ील्ड अक्सर इस प्रतिनिधित्व को संग्रहीत करते हैं।
नोट: CRC32 परिणामों को अहस्ताक्षरित पूर्णांक माना जाना चाहिए। जावा या C# जैसे हस्ताक्षरित int प्रकारों में, 0x7FFFFFF से ऊपर के मान नकारात्मक दिखाई दे सकते हैं और उन्हें uint या व्यापक अहस्ताक्षरित प्रतिनिधित्व में परिवर्तित किया जाना चाहिए।
| उदाहरण | 3421780262 |
| रेंज | 0–4,294,967,295 |
| नोट | जावा इंट के लिए, और 0xFFFFFFFFFL |
के साथ कनवर्ट करें
| के लिए सर्वश्रेष्ठ | डेटाबेस, पायथन संरचना मान, संख्यात्मक तुलना |
बाइनरी
बिट-स्तर विश्लेषण
चेकसम को 0b के साथ उपसर्गित 32-बिट बाइनरी स्ट्रिंग के रूप में प्रदर्शित करता है। प्रत्येक वर्ण 0 या 1 है, बाईं ओर सबसे महत्वपूर्ण बिट के साथ संरेखित है, और आवश्यक होने पर अग्रणी शून्य के साथ गद्देदार है।
मुख्य रूप से आंतरिक सीआरसी एल्गोरिदम को समझने, बहुपद विभाजन का अध्ययन करने, शिक्षण और एम्बेडेड परिदृश्यों के लिए उपयोगी है जिन्हें बिट-स्तरीय चेकसम प्रसंस्करण की आवश्यकता होती है।
| उदाहरण | 0b11001011…00100110 |
| लंबाई | बाएँ शून्य पैडिंग के साथ 32 बिट्स पर निश्चित |
| उच्चतम बिट | बिट 31 (MSB) सबसे बाईं ओर दिखाई देता है |
| | एल्गोरिदम विश्लेषण, शिक्षण, एम्बेडेड डिबगिंग के लिए सर्वश्रेष्ठ |
अष्टक
यूनिक्स · फाइल सिस्टम
चेकसम को 0o के साथ उपसर्गित 11-अंकीय ऑक्टल संख्या के रूप में प्रदर्शित करता है। 32 बिट्स के लिए अधिकतम 11 ऑक्टल वर्णों की आवश्यकता होती है क्योंकि 3×11 = 33 > 32. प्रत्येक ऑक्टल अंक 3 बिट्स का प्रतिनिधित्व करता है।
आधुनिक सीआरसी वर्कफ़्लो में ऑक्टल आउटपुट असामान्य है, लेकिन यह अभी भी कुछ यूनिक्स टूल, एम्बेडेड फ़र्मवेयर टूलचेन और पुराने संचार प्रोटोकॉल विनिर्देशों में दिखाई देता है।
| उदाहरण | 0o31572031046 |
| लंबाई | 11 अष्टक अंक तक |
| प्रति अंक | 3 बिट्स (0-7) का प्रतिनिधित्व करता है |
| | यूनिक्स उपकरण, पुराने प्रोटोकॉल विनिर्देशों के लिए सर्वश्रेष्ठ |