123456789 için CRC-32
0xCBF43926 CRC-32/ISO-HDLC için 0xCBF43926; ZIP, PNG, Ethernet ve gzip'in kullandığı çeşit.
Onaltılık veya metin yapıştırın; CRC-8, CRC-16 ve CRC-32'nin 63 çeşidi aynı anda hesaplansın. Tutturamadığınız bir sağlama toplamı mı var? Yazın, araç çeşidi söylesin: MODBUS, CCITT-FALSE, XMODEM. Tamamen tarayıcınızda çalışır.
| Çeşit | Sonuç | Poly | Init | RefIn/RefOut | XorOut |
|---|---|---|---|---|---|
| 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 | |
Cihazınızın belgelediği polinom yukarıdaki tabloda yoksa bunu kullanın.
Go Tools mühendislik ekibi tarafından geliştirildi ve doğrulandı.
0xCBF43926 CRC-32/ISO-HDLC için 0xCBF43926; ZIP, PNG, Ethernet ve gzip'in kullandığı çeşit.
0x4B37 0x4B37; poly 0x8005, init 0xFFFF, giriş ve çıkış yansıtmalı, son XOR yok.
0x29B1 0x29B1. Katalogdaki resmi adı CRC-16/IBM-3740: poly 0x1021, init 0xFFFF, yansıtmasız.
63 Bu hesaplayıcı kataloğa girmiş 63 çeşidi kapsıyor: 20 tanesi 8 bit, 31 tanesi 16 bit, 12 tanesi 32 bit genişliğinde.
Döngüsel artıklık denetimi, bir veri bloğunu çok uzun bir ikilik polinomun katsayıları gibi ele alır, onu modulo 2 aritmetiğiyle sabit bir üretici polinoma böler ve kalanı saklar. O kalan, sağlama toplamıdır. Bu kurgunun yaygınlaşmasının iki nedeni var: bölme işlemi kaydırma ve XOR işlemlerine indirgeniyor, ki bu donanımda neredeyse bedava; bir de cebir istatistiksel bir umut değil kesin garantiler veriyor — iyi seçilmiş 16 bitlik bir polinom, tek bitlik hataların tamamını, işe yarar bir blok uzunluğu içindeki bütün çift bitlik hataları, tek sayıda gerçekleşen her bit dönmesini ve art arda gelen 16 ya da daha az bitlik bozulmaların hepsini yakalar.
CRC'yi pratikte karıştıran şey, polinomun altı parametreden yalnızca biri olması. İki uygulama polinom üzerinde anlaşıp yine de hiçbir sonuçta buluşamaz; çünkü yazmacın başlangıç değerinde, giriş baytlarıyla çıkış yazmacının bit sırasının ters çevrilip çevrilmediğinde ve son değere XOR'lanan sabitte ayrışırlar. Bir CRC çeşidi, tek başına polinom değil, bu parametre kümesinin tamamıdır — CRC-16 gibi bir adın tek başına neredeyse hiçbir şeyi belirlememesinin ve bu sayfanın her sonucun yanında polinomu, başlangıç değerini, iki yansıtma bayrağını ve son XOR'u göstermesinin, genişliği de grup başlığı olarak kullanmasının nedeni de budur.
Tablonun gösteremediği bir kayıt var: 16 bitlik bir polinom, tek sayıda gerçekleşen her bit dönmesini ancak x+1 kendisini bölüyorsa yakalar. Bu, en çok karşılaşacağınız iki polinom olan 0x1021 ile 0x8005 için geçerlidir, ama hepsi için değil — CRC-16/T10-DIF ve CRC-16/PROFIBUS istisnalar arasında.
// 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 ve CRC-32 siz yazdıkça birlikte yeniden hesaplanır. Bir şey görebilmek için önce tahmin etmeniz gereken açılır liste yok.
Size verilen sağlama toplamını yazın, onu üreten çeşitler vurgulansın; bilinmeyen bir algoritmayı belirlemek yirmi adım yerine tek adım sürsün.
Her satır RevEng katalog adını ve sahada kullanılan takma adları birlikte gösterir — CCITT-FALSE, CRC-16/IBM, CRC-32C, X-25 ve diğerleri.
Polinom, başlangıç değeri, iki yansıtma bayrağı ve son XOR her sonucun yanında durur; böylece eşleşmeyi şartnameye karşı doğrulayabilirsiniz.
Hiçbir kataloğa girmemiş polinomlar için genişlik, polinom, başlangıç değeri, yansıtma ve son XOR alanlarının hepsi düzenlenebilir.
Hesaplama tarayıcınızda olur. Üretim çerçeveleri ve firmware imajları makineden hiç çıkmaz.
123456789
CRC-32/ISO-HDLC = 0xCBF43926, CRC-16/MODBUS = 0x4B37, CRC-8/SMBUS = 0xF4
RevEng kataloğundaki her CRC çeşidi, 123456789 ASCII karakter dizisi için sonucunu yayımlar. Bu da söz konusu girdiyi standart öz sınama hâline getirir: bir kütüphane buradaki tabloyla anlaşmıyorsa hatalı olan kütüphanedir.
01 03 00 00 00 0A
CRC-16/MODBUS = 0xCDC5
1 numaralı slave'den holding register okuma. Modbus RTU, CRC'nin düşük baytını önce eklediği için bu çerçeve hatta 01 03 00 00 00 0A C5 CD olarak gider — insanların tutturamadığı sağlama toplamlarının büyük bir kısmı bu ters sıradan çıkar.
DEADBEEF
MODBUS = 0xC19B, CCITT-FALSE = 0x4097, XMODEM = 0xC457, KERMIT = 0x1915
Hex kipinde okunuyor, yani dizgenin sekiz karakteri değil dört bayt. En bilinen dört CRC-16 çeşidi bu baytlar üzerinde tamamen ayrışıyor. Bozuk bir şey yok: aralarındaki fark doğruluk değil, başlangıç değeri, yansıtma ve son XOR.
123456789, beklenen değer 0x29B1
CRC-16/IBM-3740 (kılavuzunuz buna CRC-16/CCITT-FALSE diyor olabilir)
Hesaplayıcının asıl var oluş nedeni bu durum. Elinizde veri ve bir başkasının hesapladığı sağlama toplamı var, ama çeşidin adı yok — dolayısıyla o değeri yeniden üreten parametre kümesini arıyorsunuz.
Protokol çerçeveleri neredeyse her zaman hex'tir. Metin modunu yalnızca 123456789 öz sınama değeri gibi düz bir karakter dizisinin sağlama toplamını alırken kullanın.
Hex modunda ayraçlar yok sayılır; 01 03 00 00 00 0A, 0x01 0x03 ve 010300 00000A biçimlerinin üçü de kabul edilir.
Tablo genişliğe göre gruplanmıştır. Resmi adlar RevEng kataloğundan gelir; altlarında da cihaz kılavuzunuzun kullanma ihtimali yüksek olan takma adlar yazar.
Elinizde bir sağlama toplamı varsa ve çeşidini arıyorsanız, değeri beklenen değer kutusuna yazıp vurgulanan satırı okuyun.
Metin modunda kalınca hesaplayıcı, onaltılık dökümünüzün temsil ettiği baytları değil ASCII karakterlerini işler. Hex moduna geçin — mod anahtarının altındaki bayt sayısı hangi okumayı aldığınızı söyler.
Text mode, input "01 03" -> 5 bytes: 30 31 20 30 33
Hex mode, input "01 03" -> 2 bytes: 01 03
Modbus RTU önce CRC'nin düşük baytını iletir. C5 CD ile biten bir çerçeve 0xC5CD değil, 0xCDC5 sağlama toplamını taşır.
expected 0xC5CD (bytes read in transmission order)
expected 0xCDC5 (bytes reassembled low-byte-first)
CRC, kendinden önceki baytları kapsar. Çerçevenin tamamını, sonundaki alan da dahil olmak üzere geri beslemek sağlama toplamını değil bir artık değer üretir.
01 03 00 00 00 0A C5 CD <- trailer included
01 03 00 00 00 0A <- payload only
Kataloğa girmiş çeşitlerin 31 tanesi 16 bit genişliğindedir. Diğer beş parametre olmadan bu ad hiçbir şeyi daraltmaz.
spec says: "trailer is a CRC-16"
spec says: "CRC-16/MODBUS, poly 0x8005, init 0xFFFF, refin/refout true"
Güvenlik Araçları
AES şifreli metnini online çözün — GCM/CBC/CTR, parola veya ham anahtar, OpenSSL ve CryptoJS "U2FsdGVkX1" biçimini otomatik algılar. %100 tarayıcıda, anahtarlar sayfadan asla çıkmaz.
Güvenlik Araçları
Ücretsiz online AES şifreleme — AES-128/192/256, GCM/CBC/CTR, parola (PBKDF2) veya ham anahtar. %100 tarayıcınızda çalışır; hiçbir şey yüklenmez.
Güvenlik Araçları
bcrypt şifre karmalarını çevrimiçi oluşturun ve doğrulayın — ayarlanabilir maliyet, $2b$/$2a$/$2y$ önekleri. %100 tarayıcınızda; şifreniz asla yüklenmez.
Güvenlik Araçları
Ücretsiz online HMAC üretici ve doğrulayıcı. Metin, Hex veya Base64 anahtarlarla ve Hex/Base64/Base64URL çıktısıyla HMAC-SHA256/SHA1/SHA384/SHA512 hesaplayın. %100 tarayıcınızda — anahtarlar sayfadan asla çıkmaz.
Güvenlik Araçları
Ücretsiz JWT çözücümüzle JWT token'larını online çözün. header, payload, signature, son kullanma, algoritma ve claim'leri anında inceleyin. %100 tarayıcıda çalışır — token'ınız cihazınızdan ayrılmaz. Kayıt yok, izleme yok.
Güvenlik Araçları
Ücretsiz online JWT oluşturucu ve kodlayıcı. header ve payload'ı oluşturun, HS256, RS256 ya da ES256 ile anında imzalayın. %100 tarayıcıda çalışır — gizli anahtarınız ve özel anahtarınız cihazınızdan ayrılmaz.