قيمة CRC-32 للسلسلة «123456789»
0xCBF43926 0xCBF43926 للمتغيّر CRC-32/ISO-HDLC، وهو المستعمل في ZIP وPNG وEthernet وgzip.
الصق بيانات ست عشرية أو نصاً واحصل على 63 متغيّراً من CRC-8 وCRC-16 وCRC-32 دفعة واحدة. لديك قيمة تحقق لا تستطيع مطابقتها؟ اكتبها لتسمّي الأداة المتغيّر — MODBUS وCCITT-FALSE وXMODEM وKERMIT. يعمل كلياً داخل متصفحك.
| المتغيّر | الناتج | كثير الحدود | القيمة الابتدائية | عكس الإدخال/الإخراج | أو حصري ختامي |
|---|---|---|---|---|---|
| CRC-8 | |||||
| CRC-8/AUTOSAR | 0x2F | 0xFF | false / false | 0xFF | |
| CRC-8/BLUETOOTH | 0xA7 | 0x00 | true / true | 0x00 | |
| CRC-8/CDMA2000 | 0x9B | 0xFF | false / false | 0x00 | |
| CRC-8/DARC | 0x39 | 0x00 | true / true | 0x00 | |
| CRC-8/DVB-S2 | 0xD5 | 0x00 | false / false | 0x00 | |
| CRC-8/GSM-A | 0x1D | 0x00 | false / false | 0x00 | |
| CRC-8/GSM-B | 0x49 | 0x00 | false / false | 0xFF | |
| CRC-8/HITAG | 0x1D | 0xFF | false / false | 0x00 | |
| CRC-8/I-432-1 CRC-8/ITU | 0x07 | 0x00 | false / false | 0x55 | |
| CRC-8/I-CODE | 0x1D | 0xFD | false / false | 0x00 | |
| CRC-8/LTE | 0x9B | 0x00 | false / false | 0x00 | |
| CRC-8/MAXIM-DOW CRC-8/MAXIM · DOW-CRC | 0x31 | 0x00 | true / true | 0x00 | |
| CRC-8/MIFARE-MAD | 0x1D | 0xC7 | false / false | 0x00 | |
| CRC-8/NRSC-5 | 0x31 | 0xFF | false / false | 0x00 | |
| CRC-8/OPENSAFETY | 0x2F | 0x00 | false / false | 0x00 | |
| CRC-8/ROHC | 0x07 | 0xFF | true / true | 0x00 | |
| CRC-8/SAE-J1850 CRC-8/J1850 | 0x1D | 0xFF | false / false | 0xFF | |
| CRC-8/SMBUS CRC-8 | 0x07 | 0x00 | false / false | 0x00 | |
| CRC-8/TECH-3250 CRC-8/AES · CRC-8/EBU | 0x1D | 0xFF | true / true | 0x00 | |
| CRC-8/WCDMA | 0x9B | 0x00 | true / true | 0x00 | |
| CRC-16 | |||||
| CRC-16/ARC CRC-16 · CRC-16/IBM · CRC-16/LHA | 0x8005 | 0x0000 | true / true | 0x0000 | |
| CRC-16/CDMA2000 | 0xC867 | 0xFFFF | false / false | 0x0000 | |
| CRC-16/CMS | 0x8005 | 0xFFFF | false / false | 0x0000 | |
| CRC-16/DDS-110 | 0x8005 | 0x800D | false / false | 0x0000 | |
| CRC-16/DECT-R R-CRC-16 | 0x0589 | 0x0000 | false / false | 0x0001 | |
| CRC-16/DECT-X X-CRC-16 | 0x0589 | 0x0000 | false / false | 0x0000 | |
| CRC-16/DNP | 0x3D65 | 0x0000 | true / true | 0xFFFF | |
| CRC-16/EN-13757 | 0x3D65 | 0x0000 | false / false | 0xFFFF | |
| CRC-16/GENIBUS CRC-16/DARC · CRC-16/EPC · CRC-16/EPC-C1G2 · CRC-16/I-CODE | 0x1021 | 0xFFFF | false / false | 0xFFFF | |
| CRC-16/GSM | 0x1021 | 0x0000 | false / false | 0xFFFF | |
| CRC-16/IBM-3740 CRC-16/CCITT-FALSE · CRC-16/AUTOSAR | 0x1021 | 0xFFFF | false / false | 0x0000 | |
| CRC-16/IBM-SDLC CRC-16/X-25 · CRC-16/X25 · CRC-16/ISO-HDLC · CRC-B · X-25 | 0x1021 | 0xFFFF | true / true | 0xFFFF | |
| CRC-16/ISO-IEC-14443-3-A CRC-A | 0x1021 | 0xC6C6 | true / true | 0x0000 | |
| CRC-16/KERMIT CRC-16/CCITT · CRC-16/CCITT-TRUE · CRC-16/V-41-LSB · CRC-CCITT | 0x1021 | 0x0000 | true / true | 0x0000 | |
| CRC-16/LJ1200 | 0x6F63 | 0x0000 | false / false | 0x0000 | |
| CRC-16/M17 | 0x5935 | 0xFFFF | false / false | 0x0000 | |
| CRC-16/MAXIM-DOW CRC-16/MAXIM | 0x8005 | 0x0000 | true / true | 0xFFFF | |
| CRC-16/MCRF4XX | 0x1021 | 0xFFFF | true / true | 0x0000 | |
| CRC-16/MODBUS | 0x8005 | 0xFFFF | true / true | 0x0000 | |
| CRC-16/NRSC-5 | 0x080B | 0xFFFF | true / true | 0x0000 | |
| CRC-16/OPENSAFETY-A | 0x5935 | 0x0000 | false / false | 0x0000 | |
| CRC-16/OPENSAFETY-B | 0x755B | 0x0000 | false / false | 0x0000 | |
| CRC-16/PROFIBUS CRC-16/IEC-61158-2 | 0x1DCF | 0xFFFF | false / false | 0xFFFF | |
| CRC-16/RIELLO | 0x1021 | 0xB2AA | true / true | 0x0000 | |
| CRC-16/SPI-FUJITSU CRC-16/AUG-CCITT | 0x1021 | 0x1D0F | false / false | 0x0000 | |
| CRC-16/T10-DIF | 0x8BB7 | 0x0000 | false / false | 0x0000 | |
| CRC-16/TELEDISK | 0xA097 | 0x0000 | false / false | 0x0000 | |
| CRC-16/TMS37157 | 0x1021 | 0x89EC | true / true | 0x0000 | |
| CRC-16/UMTS CRC-16/BUYPASS · CRC-16/VERIFONE | 0x8005 | 0x0000 | false / false | 0x0000 | |
| CRC-16/USB | 0x8005 | 0xFFFF | true / true | 0xFFFF | |
| CRC-16/XMODEM CRC-16/ACORN · CRC-16/LTE · CRC-16/V-41-MSB · ZMODEM | 0x1021 | 0x0000 | false / false | 0x0000 | |
| CRC-32 | |||||
| CRC-32/AIXM CRC-32Q | 0x814141AB | 0x00000000 | false / false | 0x00000000 | |
| CRC-32/AUTOSAR | 0xF4ACFB13 | 0xFFFFFFFF | true / true | 0xFFFFFFFF | |
| CRC-32/BASE91-D CRC-32D | 0xA833982B | 0xFFFFFFFF | true / true | 0xFFFFFFFF | |
| CRC-32/BZIP2 CRC-32/AAL5 · CRC-32/DECT-B · B-CRC-32 | 0x04C11DB7 | 0xFFFFFFFF | false / false | 0xFFFFFFFF | |
| CRC-32/CD-ROM-EDC | 0x8001801B | 0x00000000 | true / true | 0x00000000 | |
| CRC-32/CKSUM CRC-32/POSIX | 0x04C11DB7 | 0x00000000 | false / false | 0xFFFFFFFF | |
| CRC-32/ISCSI CRC-32C · CRC-32/BASE91-C · CRC-32/CASTAGNOLI · CRC-32/INTERLAKEN | 0x1EDC6F41 | 0xFFFFFFFF | true / true | 0xFFFFFFFF | |
| CRC-32/ISO-HDLC CRC-32 · CRC-32/ADCCP · CRC-32/V-42 · CRC-32/XZ · PKZIP | 0x04C11DB7 | 0xFFFFFFFF | true / true | 0xFFFFFFFF | |
| CRC-32/JAMCRC | 0x04C11DB7 | 0xFFFFFFFF | true / true | 0x00000000 | |
| CRC-32/MEF | 0x741B8CD7 | 0xFFFFFFFF | true / true | 0x00000000 | |
| CRC-32/MPEG-2 | 0x04C11DB7 | 0xFFFFFFFF | false / false | 0x00000000 | |
| CRC-32/XFER | 0x000000AF | 0x00000000 | false / false | 0x00000000 | |
استعمل هذا حين يوثّق جهازك كثير حدود غير موجود في الجدول أعلاه.
بناه وتحقّق منه فريق هندسة Go Tools.
0xCBF43926 0xCBF43926 للمتغيّر CRC-32/ISO-HDLC، وهو المستعمل في ZIP وPNG وEthernet وgzip.
0x4B37 0x4B37، بكثير حدود 0x8005 وقيمة ابتدائية 0xFFFF، مع عكس الإدخال والإخراج وبلا أو حصري ختامي.
0x29B1 0x29B1. واسمه الرسمي في الفهرس هو CRC-16/IBM-3740: كثير حدود 0x1021، وقيمة ابتدائية 0xFFFF، وبلا عكس.
63 تغطّي هذه الحاسبة 63 متغيّراً مفهرساً: 20 بعرض 8 بتات، و31 بعرض 16 بتاً، و12 بعرض 32 بتاً.
يعامل التحقق الدوري بالتكرار كتلة البيانات بوصفها معاملات كثير حدود ثنائي طويل جداً، فيقسمها على كثير حدود مولِّد ثابت بحساب النميط 2، ويحتفظ بالباقي. وذلك الباقي هو قيمة التحقق. وهذه البنية شائعة لأن القسمة تختزل إلى إزاحات وعمليات أو حصري لا تكاد تكلّف شيئاً في العتاد، ولأن الجبر يمنح ضمانات صارمة لا آمالاً إحصائية: فكثير حدود ذو 16 بتاً حسن الاختيار يكشف كل خطأ أحادي البت، وكل خطأ ثنائي البت ضمن طول كتلة مفيد، وكل عدد فردي من انقلابات البتات، وكل دفقة لا تتجاوز 16 بتاً متتالياً تالفاً.
والذي يجعل CRC مربكاً في الممارسة أن كثير الحدود واحد من ستة معاملات لا أكثر. فقد يتفق تطبيقان على كثير الحدود ثم يختلفان في كل ناتج، لأنهما يفترقان في القيمة الابتدائية للسجل، وفي عكس ترتيب بتات بايتات الإدخال وسجل الإخراج من عدمه، وفي الثابت الذي يُطبَّق عليه أو الحصري في النهاية. فمتغيّر CRC هو مجموعة المعاملات كاملةً لا كثير الحدود وحده — ولهذا لا يعرّف اسم مثل «CRC-16» شيئاً يُذكر بمفرده، ولهذا تعرض هذه الصفحة بجوار كل ناتج كثير الحدود والقيمة الابتدائية وراية العكس بشقّيها وأو الحصري الختامي، مع العرض بالبت عنواناً للمجموعة.
وثمّة تحفّظ لا يستطيع الجدول إظهاره: لا يكشف كثير الحدود ذو 16 بتاً كل عدد فردي من انقلابات البتات إلا إذا كان x+1 يقسمه. وهذا متحقّق في الاثنين اللذين يُرجَّح أن تصادفهما، 0x1021 و0x8005، لا في جميعها — فـCRC-16/T10-DIF وCRC-16/PROFIBUS من الاستثناءات.
// CRC-16/MODBUS: poly=0x8005, init=0xFFFF, refin/refout=true, xorout=0x0000
// Written in the reflected form, so the polynomial appears bit-reversed as 0xA001.
function crc16Modbus(bytes) {
let crc = 0xffff;
for (const byte of bytes) {
crc ^= byte;
for (let i = 0; i < 8; i++) {
crc = crc & 1 ? (crc >>> 1) ^ 0xa001 : crc >>> 1;
}
}
return crc;
}
crc16Modbus([0x01, 0x03, 0x00, 0x00, 0x00, 0x0a]); // 0xCDC5
// On the wire Modbus RTU sends the low byte first: ... 0x0A 0xC5 0xCD يُعاد حساب CRC-8 وCRC-16 وCRC-32 معاً أثناء كتابتك. بلا قائمة منسدلة تخمّن فيها قبل أن ترى شيئاً.
اكتب قيمة التحقق التي أُعطيت لك فتُبرَز المتغيّرات التي تنتجها، فيصبح التعرّف على خوارزمية مجهولة خطوةً واحدة بدل عشرين.
يعرض كل صف اسم فهرس RevEng إلى جانب الأسماء البديلة المستعملة في الميدان — CCITT-FALSE وCRC-16/IBM وCRC-32C وX-25 وغيرها.
كثير الحدود والقيمة الابتدائية وعلَما العكس وأو الحصري الختامي تقف كلها بجوار كل ناتج، فتستطيع التحقق من المطابقة أمام المواصفة.
العرض وكثير الحدود والقيمة الابتدائية والعكس وأو الحصري الختامي كلها قابلة للتحرير، من أجل كثيرات الحدود التي لم تدخل أي فهرس قط.
الحساب يجري داخل متصفحك. وأطر الإنتاج وصور البرامج الثابتة لا تغادر هذا الجهاز أبداً.
123456789
CRC-32/ISO-HDLC = 0xCBF43926, CRC-16/MODBUS = 0x4B37, CRC-8/SMBUS = 0xF4
كل متغيّر CRC في فهرس RevEng ينشر ناتجه للسلسلة النصية ASCII 123456789. وهذا ما يجعل هذا الإدخال هو الاختبار الذاتي المعياري: فإن خالفت مكتبةٌ ما الجدول المعروض هنا، فالمكتبة هي المخطئة.
01 03 00 00 00 0A
CRC-16/MODBUS = 0xCDC5
قراءة سجلات الاحتفاظ من التابع رقم 1. يُلحق Modbus RTU بايت CRC الأدنى أولاً، فيسير هذا الإطار على الخط بالصورة 01 03 00 00 00 0A C5 CD — وهذا الانعكاس يفسّر حصة كبيرة من قيم التحقق التي يعجز الناس عن مطابقتها.
DEADBEEF
MODBUS = 0xC19B, CCITT-FALSE = 0x4097, XMODEM = 0xC457, KERMIT = 0x1915
يُقرأ بنمط ست عشري، فهي أربعة بايتات لا الأحرف الثمانية للسلسلة. وتختلف متغيّرات CRC-16 الأربعة الأشهر عليها اختلافاً تاماً. ولا شيء معطوب هنا: الفرق بينها في القيمة الابتدائية والعكس وأو الحصري الختامي، لا في الصحة.
123456789 with expected value 0x29B1
CRC-16/IBM-3740 (your manual may call it CRC-16/CCITT-FALSE)
هذه هي الحالة التي بُنيت الحاسبة من أجلها. لديك البيانات ولديك قيمة التحقق التي حسبها شخص آخر، لكن اسم المتغيّر مفقود — فتبحث عن مجموعة المعاملات التي تعيد إنتاجه.
أطر البروتوكولات ست عشرية دائماً تقريباً. ولا تستعمل وضع النص إلا حين تحسب قيمة تحقق لسلسلة نصية حرفية، مثل قيمة الاختبار الذاتي 123456789.
في الوضع الست عشري تُتجاهل الفواصل، فالصيغ 01 03 00 00 00 0A و0x01 0x03 و010300 00000A كلها مقبولة.
الجدول مجمَّع حسب العرض. والأسماء الرسمية مأخوذة من فهرس RevEng، وتحتها الأسماء البديلة التي يرجَّح أن يستعملها دليل جهازك.
إن كانت قيمة التحقق بين يديك وأردت معرفة متغيّرها، فاكتبها في صندوق القيمة المتوقعة واقرأ الصف المُبرَز.
إن بقيتَ في وضع النص، حسبت الحاسبة محارف ASCII لمقطعك الست عشري بدل البايتات التي يمثّلها. بدّل إلى الوضع الست عشري — وعدّاد البايتات أسفل مبدّل الوضع يخبرك أي قراءة حصلت عليها.
Text mode, input "01 03" -> 5 bytes: 30 31 20 30 33
Hex mode, input "01 03" -> 2 bytes: 01 03
يرسل Modbus RTU بايت CRC الأدنى أولاً. فالإطار المنتهي بـC5 CD قيمة تحققه 0xCDC5 لا 0xC5CD.
expected 0xC5CD (bytes read in transmission order)
expected 0xCDC5 (bytes reassembled low-byte-first)
يغطّي CRC البايتات التي تسبقه. وإعادة تغذية الإطار كاملاً بذيله تنتج بقيّة لا قيمة تحقق.
01 03 00 00 00 0A C5 CD <- trailer included
01 03 00 00 00 0A <- payload only
واحد وثلاثون متغيّراً مفهرساً عرضها 16 بتاً. وبدون المعاملات الخمسة الأخرى لا يضيّق هذا الاسم شيئاً.
spec says: "trailer is a CRC-16"
spec says: "CRC-16/MODBUS, poly 0x8005, init 0xFFFF, refin/refout true"
أدوات الأمن
فك تشفير AES أونلاين — GCM/CBC/CTR، عبارة مرور أو مفتاح خام، يكتشف تلقائيًا صيغة OpenSSL وCryptoJS "U2FsdGVkX1". يعمل 100% داخل المتصفح، والمفاتيح لا تغادر الصفحة أبدًا.
أدوات الأمن
أداة تشفير AES مجانية أونلاين — AES-128/192/256، GCM/CBC/CTR، عبارة مرور (PBKDF2) أو مفتاح خام. تعمل 100% داخل متصفحك؛ لا شيء يُرفع.
أدوات الأمن
ولّد تجزئات كلمات المرور بـ bcrypt وتحقق منها أونلاين — تكلفة قابلة للضبط، بادئات $2b$/$2a$/$2y$. 100% في متصفحك؛ كلمة مرورك لا تُرفع أبداً.
أدوات الأمن
مولّد ومدقّق HMAC مجاني أونلاين. احسب HMAC-SHA256/SHA1/SHA384/SHA512 بمفاتيح Text أو Hex أو Base64 وإخراج Hex/Base64/Base64URL. كل شيء داخل متصفحك — المفاتيح لا تغادر الصفحة.
أدوات الأمن
فك ترميز رموز JWT أونلاين مع محلّل JWT المجاني. افحص الترويسة والحمولة والتوقيع وانتهاء الصلاحية والخوارزمية والمطالبات فوراً. 100% في المتصفح — رمزك لا يغادر جهازك. بلا تسجيل، بلا تتبّع.
أدوات الأمن
مولّد ومرمّز JWT مجاني أونلاين. ابنِ الترويسة والحمولة، ووقّع بـ HS256 أو RS256 أو ES256 فوراً. 100% في المتصفح — سرّك ومفتاحك لا يغادران جهازك.