CRC-32C Hash-koodilaskin
Julkaistu: 17. helmikuuta 2025 klo 18.44.45 UTC
Viimeksi päivitetty: 12. tammikuuta 2026 klo 11.37.22 UTC
CRC-32C Hash Code Calculator
Syklinen redundanssitarkistus (CRC) on virheiden havaitsemiseen tarkoitettu koodi, jota käytetään yleisesti raakadatan vahingossa tapahtuvien muutosten havaitsemiseen. Vaikka CRC-32 ei teknisesti ottaen ole kryptografinen tiivistefunktio, sitä kutsutaan usein tiivisteeksi, koska se pystyy tuottamaan kiinteän kokoisen tulosteen (32 bittiä) vaihtelevan pituisesta syötteestä. Tällä sivulla esitetty versio on CRC-32C-variantti, joka on uudempi, "älykkäämpi" (parempi virheiden havaitseminen) versio, jota usein laitteistokiihdytetään nykyaikaisissa suorittimissa (SSE 4.2:n kautta).
Täydellinen paljastus: en ole kirjoittanut tällä sivulla käytetyn hash-funktion toteutusta. Se on PHP-ohjelmointikielen mukana tuleva vakiofunktio. Tein vain web-käyttöliittymän, jotta se olisi julkisesti saatavilla täällä.
Tietoja CRC-32C-hajautusalgoritmista
En ole matemaatikko, mutta yritän selittää tätä tiivistefunktiota yksinkertaisella analogialla. Toisin kuin monet kryptografiset tiivistefunktiot, se ei ole erityisen monimutkainen algoritmi, joten se luultavasti riittää ;-)
Kuvittele, että lähetät kirjettä postitse, mutta olet huolissasi siitä, että se saattaa vahingoittua ennen kuin se saapuu vastaanottajalle. Kirjeen sisällön perusteella lasket CRC-32-tarkistussumman ja kirjoitat sen kirjekuoreen. Kun vastaanottaja vastaanottaa kirjeen, hän voi myös laskea tarkistussumman ja tarkistaa, vastaako se kirjoittamaasi. Jos vastaa, kirje ei ole vaurioitunut tai muuttunut matkan varrella.
CRC-32 tekee tämän nelivaiheisella prosessilla:
Vaihe 1: Lisää ylimääräistä tilaa (täyte)
- CRC lisää viestin loppuun hieman ylimääräistä tilaa (kuten pakkaisi maapähkinöitä laatikkoon).
- Tämä auttaa sitä havaitsemaan virheet helpommin.
Vaihe 2: Maaginen viivain (polynomi)
- CRC-32 käyttää erityistä "taikaviivainta" datan mittaamiseen. Ajattele tätä viivainta kohoumien ja urien muodostamana kuviona (tämä on polynomi, mutta älä välitä siitä sanasta). Yleisin CRC-32:n "viivain" on kiinteä kuvio.
Vaihe 3: Viivaimen liu'uttaminen (jakolasku)
- CRC liu'uttaa nyt viivainta viestin poikki. Jokaisessa kohdassa se tarkistaa, ovatko kohoumat ja urat linjassa. Jos ne eivät ole linjassa, CRC tekee merkinnän (tämä tehdään käyttämällä yksinkertaista XOR-operaatiota, kuten kytkimien kytkemistä päälle tai pois päältä). Se jatkaa kytkimien liu'uttamista ja kääntämistä, kunnes se saavuttaa pään.
Vaihe 4: Lopputulos (tarkistussumma)
- Kun olet liu'uttanut viivainta koko viestin poikki, jäljelle jää pieni numero (32 bittiä pitkä), joka edustaa alkuperäistä dataa. Tämä numero on kuin viestin yksilöllinen sormenjälki. Tämä on CRC-32-tarkistussumma.
Sivulla esitetty versio on CRC-32C-variantti, jonka pitäisi olla ensisijainen variantti, varsinkin jos käytät laitteistokiihdytettyä suoritinta (SSE 4.2 ja uudemmat) etkä tarvitse yhteensopivuutta muiden varianttien kanssa.
Minulla on laskureita myös muille versioille:
- Linkki
- Linkki
Lisälukemista
Jos pidit tästä postauksesta, saatat pitää myös näistä ehdotuksista:
