CRC-32B jaucējkoda kalkulators
Publicēts: 2025. gada 17. februāris 18:26:18 UTC
Jaucējkoda kalkulators, kas izmanto jaucējfunkciju CRC-32B (Cyclic Redundancy Check 32 bit, B variants), lai aprēķinātu jaucējkodu, pamatojoties uz teksta ievadi vai faila augšupielādi.CRC-32B Hash Code Calculator
Cikliskā redundances pārbaude (CRC) ir kļūdu noteikšanas kods, ko parasti izmanto, lai noteiktu nejaušas izmaiņas neapstrādātajos datos. Lai gan tehniski tā nav kriptogrāfiska jaucējfunkcija, CRC-32 bieži tiek saukta par jaucējfunkciju, jo tā spēj radīt fiksēta izmēra izvadi (32 biti) no mainīga garuma ievades. Šajā lapā piedāvātā versija ir CRC-32B variants, kas patiesībā ir tikai dīvainība PHP valodā, kas maina bitus (sākotnējā CRC-32 mazais-endians vs big-endian).
Pilnīga informācijas izpaušana: es neesmu rakstījis šajā lapā izmantotās hash funkcijas konkrēto implementāciju. Tā ir standarta funkcija, kas iekļauta PHP programmēšanas valodā. Es tikai izveidoju tīmekļa saskarni, lai padarītu to publiski pieejamu šeit ērtības labad.
Par CRC-32B hash algoritmu
Es neesmu matemātiķis, bet es mēģināšu izskaidrot šo jaucējfunkciju ar vienkāršu analoģiju. Atšķirībā no daudzām kriptogrāfijas jaucējfunkcijām, tas nav īpaši sarežģīts algoritms, tāpēc, iespējams, viss būs kārtībā ;-)
Iedomājieties, ka sūtāt vēstuli pa pastu, taču uztraucaties, ka tā var tikt sabojāta, pirms tā nonāk pie adresāta. Pamatojoties uz vēstules saturu, jūs aprēķiniet CRC-32 kontrolsummu un uzrakstiet to uz aploksnes. Kad adresāts saņem vēstuli, viņš vai viņa var arī aprēķināt kontrolsummu un redzēt, vai tā atbilst jūsu rakstītajam. Ja tā notiek, vēstule nav bojāta vai mainīta.
Veids, kā CRC-32 to dara, ir četru posmu process:
1. darbība: pievienojiet papildu vietu (polsterējums)
- CRC ziņojuma beigās pievieno nedaudz papildu vietas (piemēram, zemesriekstu iesaiņošana kastē).
- Tas palīdz vieglāk pamanīt kļūdas.
2. darbība: burvju lineāls (polinoms)
- CRC-32 datu mērīšanai izmanto īpašu "maģisko lineālu".
- Padomājiet par šo lineālu kā izciļņu un rievu rakstu (tas ir polinoms, taču neuztraucieties par šo vārdu).
- Visizplatītākais CRC-32 "lineāls" ir fiksēts raksts.
3. darbība: lineāla bīdīšana (dalīšanas process)
- Tagad CRC slīd lineālu pāri ziņojumam.
- Katrā vietā tā pārbauda, vai izciļņi un rievas sakrīt.
- Ja tie nesakrīt, CRC veic piezīmi (tas tiek darīts, izmantojot vienkāršu XOR, piemēram, ieslēdzot vai izslēdzot slēdžus).
- Tas turpina bīdīt un pagriezt slēdžus, līdz sasniedz beigas.
4. darbība: gala rezultāts (kontrolsumma)
- Pēc lineāla slīdēšanas pāri visam ziņojumam jums paliek neliels skaitlis (32 biti garš), kas apzīmē sākotnējos datus.
- Šis numurs ir kā unikāls ziņojuma pirkstu nospiedums.
- Šī ir CRC-32 kontrolsumma.
Lapā parādītā versija ir CRC-32B variants, kas lielākoties ir PHP dīvainība, kas maina bitu secību (little-endian vs big-endian). Šo versiju, iespējams, vajadzētu izmantot tikai tad, ja jums īpaši nepieciešama saderība ar citu PHP lietojumprogrammu, kas to izmanto.
Man ir kalkulatori arī citiem variantiem: