bitlvl
SR

CRC i checksum kalkulator

Ukucajte tekst, nalepite heks bajtove ili prevucite datoteku i dobijte sve uobičajene CRC-ove odjednom, svaki sa svojim parametrima, da biste pronašli varijantu koju uređaj ili protokol koristi.

Ili prevucite datoteku, ili

Prilagođeni CRC model

Refleksija

Rezultati i poruke ovog alata prikazuju se na engleskom.

Šta je CRC

Ciklična provera redundanse (cyclic redundancy check) posmatra poruku kao jedan dugačak binarni broj i deli ga fiksnim polinomom; ostatak je kontrolna suma. Obrnite bilo koji bit, ili bilo koji niz bitova kraći od CRC-a, i ostatak se menja, zbog čega CRC-ovi štite Ethernet okvire, ZIP stavke, PNG blokove, sektore diska i serijske protokole. Brzi su i u hardveru i u softveru, ali nisu kriptografski: svako može da napravi podatke sa izabranim CRC-om.

Zašto postoji toliko „CRC-16“ varijanti

Dve implementacije iste širine mogu da se razlikuju u pet parametara, a svaka kombinacija je drugačija kontrolna suma:

ParametarZnačenje
PolinomDelilac, zapisan bez najvišeg bita (0x1021 za CCITT, 0x04C11DB7 za CRC-32).
InitPočetna vrednost registra, 0 ili sve jedinice.
Refleksija ulazaDa li se svaki ulazni bajt obrađuje počev od najmanje značajnog bita (da za CRC-32, MODBUS; ne za CCITT-FALSE, XMODEM).
Refleksija izlazaDa li se bitovi završnog registra obrću.
XOR outZavršni XOR, obično 0 ili sve jedinice.

Standardni način da se varijanta identifikuje je njena kontrolna vrednost: CRC ASCII niza 123456789. Tabela iznad je prikazuje za svaki model, a podrazumevani unos je upravo taj niz, pa ako vam uređaj da kontrolnu sumu za poznati sadržaj, možete je uporediti sa svim varijantama odjednom.

Uobičajeni izbori

  • CRC-32 (0x04C11DB7, reflektovan): Ethernet, ZIP, gzip, PNG, zlib.crc32, cksum -o 3.
  • CRC-32C (Castagnoli): iSCSI, SCTP, ext4 metapodaci, Btrfs, LevelDB; ima hardversku instrukciju na x86 i ARM-u, pa je brz izbor za nove dizajne.
  • CRC-16/MODBUS: Modbus RTU preko serijske veze; CRC-16/CCITT-FALSE: Bluetooth, mnoge tvrdnje „CRC-CCITT“; CRC-16/XMODEM: XMODEM, Python binascii.crc_hqx.
  • Adler-32: zlib tokovi; brži od CRC-a, ali slabiji za kratke ulaze.

Pitanja

Da li je CRC isto što i heš?

Ne. CRC otkriva slučajna oštećenja i može trivijalno da se obrne ili falsifikuje. Za integritet protiv napadača, ili za identifikovanje datoteka, koristite SHA-256. Za brzinu na pouzdanom kanalu CRC je sasvim dovoljan.

Moj uređaj daje drugačiji CRC-16 od ove stranice.

Postoji bar desetak CRC-16 varijanti. Unesite sadržaj za koji je uređaj izračunao kontrolnu sumu i uporedite njegovu vrednost sa svakim redom tabele; red koji se poklapa govori vam polinom, init i refleksiju koje uređaj koristi. Ako se nijedan ne poklapa, probajte prilagođeni model i proverite da li uređaj u podatke uključuje bajt dužine ili adresu.

Koji redosled bajtova ima rezultat?

CRC se prikazuje kao broj. Kada se upisuje u paket, protokol određuje redosled: MODBUS šalje prvo niži bajt, XMODEM prvo viši. Proverite specifikaciju ili primer okvira.

Šta je CRC-32C i zašto ga baze podataka koriste?

CRC-32 sa Castagnolijevim polinomom, koji ima bolja svojstva otkrivanja grešaka za veličine blokova koje skladišni sistemi koriste i implementiran je kao jedna CPU instrukcija (SSE4.2 crc32, ARMv8 CRC32C), što ga čini nekoliko puta bržim od klasičnog CRC-32.

Mogu li da računam CRC inkrementalno?

Da. Svi ovi CRC-ovi mogu da se nastave od prethodne vrednosti, tako radi zlib.crc32(data, previous). Ova stranica računa ceo unos odjednom.