CRC-32C maišos kodo skaičiuoklė
Paskelbta: 2025 m. vasario 17 d. 18:44:55 UTC
Maišos kodo skaičiuoklė, naudojanti CRC-32C (Cyclic Redundancy Check 32 bit, C variant) maišos funkciją, kad apskaičiuotų maišos kodą pagal teksto įvestį arba failo įkėlimą.CRC-32C Hash Code Calculator
Ciklinio atleidimo patikrinimas (CRC) yra klaidų aptikimo kodas, dažniausiai naudojamas atsitiktiniams neapdorotų duomenų pakeitimams aptikti. Nors CRC-32 techniškai nėra kriptografinė maišos funkcija, ji dažnai vadinama maiša, nes ji gali gaminti fiksuoto dydžio išvestį (32 bitus) iš kintamo ilgio įvesties. Šiame puslapyje pateikta versija yra CRC-32C variantas, kuris yra naujesnė, „išmanesnė“ (geresnis klaidų aptikimas) versija, kuri dažnai yra aparatinė pagreitinta šiuolaikiniuose procesoriuose (per SSE 4.2).
Visiškai atskleidžiu informaciją: šiame puslapyje naudojamos hash funkcijos konkrečios realizacijos nerašiau. Tai standartinė PHP programavimo kalbos funkcija. Aš tik sukūriau žiniatinklio sąsają, kad patogumo dėlei ji būtų viešai prieinama.
Apie CRC-32C maišos algoritmą
Nesu matematikas, bet pabandysiu paaiškinti šią maišos funkciją paprasta analogija. Skirtingai nuo daugelio kriptografinių maišos funkcijų, tai nėra ypač sudėtingas algoritmas, todėl tikriausiai viskas bus gerai ;-)
Įsivaizduokite, kad siunčiate laišką paštu, bet nerimaujate, kad jis gali būti sugadintas dar nepasiekęs gavėjo. Remdamiesi laiško turiniu, apskaičiuojate CRC-32 kontrolinę sumą ir užrašykite ją ant voko. Kai gavėjas gauna laišką, jis taip pat gali apskaičiuoti kontrolinę sumą ir patikrinti, ar ji atitinka tai, ką parašėte. Jei taip, laiškas nebuvo pažeistas ar pakeistas.
CRC-32 tai atlieka keturių etapų procesas:
1 veiksmas: pridėkite šiek tiek papildomos vietos (paminkštinimas)
- CRC pranešimo pabaigoje prideda šiek tiek papildomos vietos (pvz., žemės riešutų supakavimas į dėžutę).
- Tai padeda lengviau pastebėti klaidas.
2 veiksmas: stebuklinga valdovė (polinomas)
- CRC-32 naudoja specialią „stebuklingą liniuotę“ duomenims matuoti.
- Pagalvokite apie šią liniuotę kaip apie iškilimų ir griovelių raštą (tai yra daugianomas, bet nesijaudinkite dėl šio žodžio).
- Dažniausia CRC-32 „liniuote“ yra fiksuotas raštas.
3 veiksmas: liniuotės slydimas (dalijimo procesas)
- Dabar CRC slysta liniuote per pranešimą.
- Kiekvienoje vietoje jis patikrina, ar iškilimai ir grioveliai sutampa.
- Jei jie nesutampa, CRC padaro pastabą (tai daroma naudojant paprastą XOR, pvz., įjungiant arba išjungiant jungiklius).
- Jis nuolat slenka ir apverčia jungiklius, kol pasiekia pabaigą.
4 veiksmas: galutinis rezultatas (kontrolinė suma)
- Paslinkę liniuote per visą pranešimą, lieka nedidelis skaičius (32 bitų ilgio), kuris atspindi pradinius duomenis.
- Šis numeris yra tarsi unikalus žinutės piršto atspaudas.
- Tai CRC-32 kontrolinė suma.
Puslapyje pateikta versija yra CRC-32C variantas, kuris turėtų būti pageidaujamas variantas, ypač jei naudojate procesorių, kuriame yra aparatinės įrangos pagreitis (SSE 4.2 ir naujesnė versija) ir jums nereikia suderinamumo su kitais variantais.
Taip pat turiu skaičiuotuvus kitiems variantams: