CRC-32B Hash-koodilaskin
Julkaistu: 17. helmikuuta 2025 klo 18.24.38 UTC
Viimeksi päivitetty: 12. tammikuuta 2026 klo 9.15.44 UTC
CRC-32B Hash Code Calculator
Cyclic Redundancy Check (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-32B-variantti, joka on oikeastaan vain PHP-kielen omituisuus, joka kääntää bitit toisin päin (little-endian vs. big-endian alkuperäisessä CRC-32:ssa).
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-32B-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-32B-variantti, joka on enimmäkseen PHP:n omituisuus, joka vaihtaa bittijärjestystä (little-endian vs. big-endian). Tätä versiota kannattaa luultavasti käyttää vain, jos tarvitset erityisesti yhteensopivuutta toisen sitä käyttävän PHP-sovelluksen kanssa.
Minulla on laskureita myös muille versioille:
- Linkki
- Linkki
Lisälukemista
Jos pidit tästä postauksesta, saatat pitää myös näistä ehdotuksista:
