Apskaičiuoti failo checksum

apskaičiuoja failo kontrolinę sumą (checksum) MD5, SHA-1, SHA-256 arba SHA-512. Idealu atsisiuntimo vientisumo patikrai arba pakeitimų aptikimui

Kas yra kontrolinė suma?

Kontrolinė suma (kartais rašoma chksum) yra unikalus skaitmeninis piršto atspaudas, apskaičiuojamas iš failo turinio maišos algoritmu. Šis piršto atspaudas arba piršto atspaudas paprastai vaizduojamas fiksuoto ilgio šešioliktaine eilute.

Pagrindinė gero maišos algoritmo savybė yra lavinos efektas: bet koks šaltinio failo modifikavimas, net ir vienu bitu, sukuria radikaliai skirtingą kontrolinę sumą. Du failai su visiškai identišku turiniu visada sukuria tą pačią kontrolinę sumą, nepaisant failo pavadinimo, modifikavimo datos ar operacinės sistemos.

Kontrolinė suma daugiausia naudojama failo vientisumui patikrinti: jei vietoje perskaičiuotas piršto atspaudas atitinka leidėjo paskelbtą, failas yra nepažeistas. Kitu atveju jis buvo pakeistas, sugadintas gabenant arba modifikuotas.

Kam jis iš tikrųjų naudojamas?

  • Patikrinkite atsisiuntimo vientisumą: „Linux ISO“ („Debian“, „Ubuntu“, „Fedora“, „Arch“), „Docker“ vaizdas, „Windows“ diegimo programa arba atvirojo kodo archyvas sistemingai skelbia oficialią kontrolinę sumą. Perskaičiavus jį vietoje patvirtinama, kad failas yra baigtas ir nepakeistas.
  • Aptikti sugadinimą siunčiant: nutrauktas atsisiuntimas, sugedęs disko sektorius, nestabili RAM, nukrypęs tinklo kabelis arba kopija USB rakte gali sugadinti baitus. Kontrolinė suma iš karto atskleidžia šias tyliąsias klaidas.
  • Parašo kontrolinio kodo atspaudas: patvirtinkite, kad failas yra iš laukiamo autoriaus, kai kontrolinė suma transliuojama saugiu kanalu (HTTPS, GPG parašas). Tai yra „Linux“ paketų saugyklų ir programų saugyklų mechanizmas.
  • Versijų kūrimas ir kaupimas talpykloje: „Git“ identifikuoja kiekvieną įsipareigojimą, blobą ir medį su SHA-1 maiša (perkeliama į SHA-256). CDN ir žiniatinklio rinktuvai (Webpack, Vite, esbuild) įveda maišą į failo pavadinimą (app.4a8f2c.js), kad automatiškai panaikintų naršyklės talpyklą pakeitus.
  • Dubliavimo aptikimas ir dubliavimo panaikinimas: papildomos atsarginės kopijos (Borg, Restic, rsync), failų sistemos (ZFS) ir objektų saugykla identifikuoja identiškus blokus pagal maišą, kad būtų išsaugota tik viena kopija.
  • Įkėlimo patvirtinimas: klientas išsiunčia laukiamą kontrolinę sumą, o gavęs serveris ją perskaičiuoja. Pavyzdžiui, AWS S3 priima Content-MD5 arba x-amz-checksum-sha256 antraštę, kad atmestų sugadintą įkėlimą.
  • Grėsmės žvalgyba ir antivirusinė informacija: „VirusTotal“ ir antivirusinės programos pardavėjai indeksuoja kenkėjiškus failus naudodami SHA-256 maišą, kuri leidžia aptikti neperduodant visos dvejetainės programos.

Palaikomi algoritmai ir skirtumai

  • MD5 (128 bitai, 32 šešioliktainiai simboliai): greitas, plačiai paplitęs, bet kriptografiškai pažeistas. MD5 susidūrimai gali būti apskaičiuojami per kelias sekundes esamoje aparatinėje įrangoje nuo 2004 m. Naudojamas tik nekenksmingam vientisumo patikrinimui (atsiuntimas prieš tinklo nutrūkimą, vietinė atsarginė kopija). Draudžiama naudoti bet kokias saugos funkcijas, parašą ar autentifikavimą.
  • SHA-1 (160 bitų, 40 šešioliktainių simbolių): nebenaudojama kriptografijai nuo 2017 m. SHAttered atakos, kuri parodė tikrą dviejų atskirų PDF failų susidūrimą. Git vis dar naudoja jį pagal numatytuosius nustatymus, bet perkelia į SHA-256. Daugiau nenaudokite jo pasirašyti ar autentifikuoti.
  • SHA-256 (256 bitai, 64 šešioliktainiai simboliai): modernus standartas, SHA-2 šeimos narys. Šiuolaikinių TLS sertifikatų, Linux paketų parašų (apt, dnf, pacman), Bitcoin ir oficialių vientisumo patikrų pagrindas. Lėtesnis nei MD5, bet, remiantis dabartinėmis žiniomis, saugus.
  • SHA-512 (512 bitų, 128 šešioliktainiai simboliai): 64 bitų SHA-2 variantas. 64 bitų žodžius tvarko savaime, todėl kartais greičiau nei SHA-256 64 bitų CPU. Didesnis plotas, didesnė saugos riba.
  • CRC32 (32 bitai, 8 šešioliktainiai simboliai): nekriptografinis, itin greitas, sukurtas specialiai perdavimo klaidoms aptikti. Naudojamas Ethernet, ZIP, PNG, gzip. Neapsaugo nuo piktavališkų ketinimų: užpuolikas gali trivialiai suklastoti failą su tuo pačiu CRC32 kaip ir kitas. Tinka greitam aparatinės įrangos patikrinimui, o ne saugai.

Naudojimo atvejai

  • Patikrinkite Linux ISO: Debian, Ubuntu, Fedora ir Arch paskelbia kiekvieno oficialaus vaizdo SHA-256 ir SHA-512, dažnai pasirašomus GPG.
  • Patvirtinkite pasirašytą dvejetainį failą: patvirtinkite, kad vykdomasis failas, atsisiųstas iš veidrodžio, nebuvo pakeistas apgauta versija.
  • Palyginkite dvi versijas: prieš ir po modifikavimo tapatybė po bito įrodo tapatybę, neplatinant failų.
  • Įkėlimo patvirtinimas: klientas išsiunčia kontrolinę sumą, o gavęs serveris ją perskaičiuoja, kad patvirtintų, kad nėra sugadinimo.
  • Pirštų atspaudų ėmimas: robotų arba žinomų failų aptikimas kontrolinių kodų duomenų bazėse (antivirusinė, grėsmės žvalgyba, pasikartojanti paieška).

Kaip juo naudotis

  1. Nuvilkite failą į nurodytą sritį arba naudokite pasirinkimo mygtuką.
  2. Pasirinkite algoritmą: MD5, SHA-1, SHA-256, SHA-512 arba CRC32.
  3. Rodoma kontrolinė suma, paruošta kopijuoti.
  4. Palyginkite gautą vertę su pamatine verte (paskelbta leidėjo arba saugoma vietoje).

Skaičiavimas atliekamas lokaliai jūsų naršyklėje, nesiunčiant failo į nuotolinį serverį. Turinys išlieka konfidencialus.

Kaip patikrinti atsisiuntimą naudojant kontrolinę sumą?

Standartinė tikrinimo procedūra yra tokia:

  1. Oficialioje svetainėje skelbiama laukiama kontrolinė suma, pvz., d41d8cd98f00b204e9800998ecf8427e MD5 arba 64 simbolių eilutę SHA-256.
  2. Atsisiųskite failą.
  3. Apskaičiuokite jo kontrolinę sumą naudodami šį įrankį arba komandų eilutę.
  4. Palyginti: jei dvi eilutės yra visiškai identiškos, po simbolio, failas yra nepažeistas. Jei jie skiriasi net vienu simboliu, failas yra sugadintas arba sugadintas: nenaudokite jo, atsisiųskite iš naujo.

Iš komandinės eilutės sistemoje „Linux“:


# Apskaičiuokite kontrolinę sumą
md5sum failas.iso
sha1sum failas.iso
sha256sum failas.iso
sha512sum failas.iso
cksum file.iso # CRC32 + dydis

# Automatiškai patikrinkite iš redaktoriaus paskelbto .sha256 failo
sha256sum -c failas.iso.sha256
# Rodo: "file.iso: OK", jei kontrolinė suma sutampa

Naudojant „MacOS“:


md5 failas.iso
shasum -1.iso failas
shasum -256 failas.iso
shasum -512 failas.iso

# Patvirtinimas iš nuorodos failo
shasum -a 256 -c failas.iso.sha256

Naudojant „Windows“ („PowerShell“):


Get-FileHash file.iso -Algoritmas MD5
Get-FileHash file.iso -Algoritmas SHA1
Get-FileHash file.iso -Algoritmas SHA256
Get-FileHash file.iso -Algoritmas SHA512

# Palyginkite su numatoma verte
(Get-FileHash file.iso -Algorithm SHA256).Hash -eq "ABC123..."

Greitas algoritmų palyginimas

Algoritmas Dydis Greitis Rekomenduojamas naudojimas
CRC32 32 bitų Labai greitai Nekriptografinis tinklo arba saugyklos klaidų aptikimas
MD5 128 bitai Greitai Tik nepriešiškas vientisumas, kurio reikia vengti saugumo srityje
SHA-1 160 bitų Greitai Pasenęs, senas suderinamumas („Git“, seni paketai)
SHA-256 256 bitai Vidutinis Dabartinis standartas, vientisumo tikrinimas ir parašai
SHA-512 512 bitų Greitas per 64 bitus Vienumo patikrinimas, didesnė saugos riba

DUK

MD5 arba SHA-256 patikrinti ISO?

SHA-256 pagal numatytuosius nustatymus. Beveik visi šiuolaikiniai Linux platinimai išleidžia SHA-256 ir SHA-512, kartais kartu su MD5 istoriniu suderinamumu. Jei leidėjas išleidžia tik MD5 ir esate susirūpinę dėl kompromiso, reikalaukite SHA-256 arba patikrinkite kontrolinių sumų failo GPG parašą. Jei nerimaujate dėl atsisiuntimo sugadinimo, MD5 techniškai pakanka.

Ar kontrolinė suma garantuoja mano failo saugumą?

Ne, ne jam vienam. Kontrolinė suma įrodo vientisumą, o ne autentiškumą. Jei užpuolikas valdo atsisiuntimo serverį, jis gali paskelbti modifikuotą failą ir jo pakeistą kontrolinę sumą. Tikrasis saugumas gaunamas iš skaitmeninio parašo (GPG, kodo pasirašymo), kuris susieja kontrolinę sumą su žinomu privačiu raktu. Visada gaukite kontrolinę sumą naudodami HTTPS arba, geriau, naudodami patikrinamą GPG parašą.

Mano kontrolinė suma nesutampa, ką turėčiau daryti?

Pirmiausia įsitikinkite, kad lyginate teisingą algoritmą: SHA-256 negali atitikti SHA-1. Tada vėl pradėkite atsisiuntimą, geriausia iš kito veidrodžio: dažniausia priežastis yra tinklo nutrūkimas. Jei neatitikimas išlieka po kelių bandymų, įtarkite, kad veidrodis pažeistas: grįžkite į oficialų šaltinį ir patikrinkite GPG parašą, jei toks yra. Niekada nepaleiskite ir nenaudokite failo, kol nesutaps kontrolinė suma.

Kodėl MD5 nebenaudojamas?

MD5 kenčia nuo praktinių susidūrimų: per kelias sekundes galima sukonstruoti du skirtingus failus su lygiai tokia pačia MD5 maiša. Ši savybė pažeidžia pačią kriptografinės maišos funkciją. Tiksliau sakant, užpuolikas gali sukurti kenkėjišką dvejetainį failą su tuo pačiu MD5 kaip ir teisėtas dvejetainis failas. SHA-1 kenčia nuo tos pačios problemos nuo 2017 m. (SHAttered ataka). Tik SHA-256, SHA-512 ir jų variantai bus laikomi saugiais 2026 m.

Kuo skiriasi maiša ir kontrolinė suma?

Maiša yra bendras maišos funkcijos rezultatas. Kontrolinė suma yra maiša, naudojama konkrečiai duomenų vientisumui patikrinti. Visos kontrolinės sumos yra maišos, bet ne visos maišos yra kontrolinės sumos: slaptažodžio maiša (bcrypt, argon2) naudojama autentifikavimui, maiša maišos lentelėje naudojama greitam indeksavimui. Terminas piršto atspaudas arba piršto atspaudas yra dažnas kontrolinės sumos sinonimas.

Ar mano poreikiams pakanka CRC32?

CRC32 pakanka, jei norite aptikti tik atsitiktinį sugadinimą ne priešiškame kanale: vidinio tinklo perkėlimas, ZIP archyvo patikra, atminties nuoseklumo patikra. Turėdami tik 32 bitus, du atsitiktiniai failai turi maždaug 1 iš 4 milijardų galimybę atsitiktinai turėti tą patį CRC32, o to pakanka klaidoms aptikti. CRC32 yra nepakankamas, kai tik užpuolikas gali paveikti turinį: suklastoti failą su tiksliniu CRC32 yra nereikšminga. Jei norite patikrinti, ar nėra kenkėjiškos rizikos, naudokite SHA-256.

Kodėl mano kontrolinė suma skiriasi priklausomai nuo OS?

To paties dvejetainio turinio kontrolinė suma visur yra vienoda. Jei gaunate du skirtingus rezultatus, failas iš tikrųjų skiriasi: eilučių pabaiga („Windows CRLF“ ir „Unix LF“) po teksto režimo FTP perdavimo, atidarius pakeista teksto koduotė, sistemos pridėti metaduomenys (macOS Spotlight skiriamoji geba, išplėsti atributai) arba tylus perkėlimo kliento suspaudimas. Visada perkelkite dvejetainiu režimu.

Kontrolinė suma ar skaitmeninis parašas?

Kontrolinė suma įrodo, kad failas nebuvo pakeistas nuo paskelbimo iki gavimo, jei kontrolinė suma gaunama saugiu kanalu. Skaitmeninis parašas (GPG, PGP, kodo pasirašymo autentifikavimo kodas) taip pat įrodo autoriaus tapatybę naudojant privatų raktą. Parašas apima ir sustiprina kontrolinę sumą: įprasta Debian, Tor arba Bitcoin Core praktika yra pasirašyti kontrolinių sumų failą GPG, tada naudoti šias kontrolines sumas dvejetainiams failams patikrinti.

Dažnai užduodami klausimai

Ar failas siunčiamas į serverį, kad būtų galima apskaičiuoti kontrolinę sumą?

Ne. Skaičiavimas atliekamas tik jūsų naršyklėje, naudojant Web Crypto API ir vietines „JavaScript“ procedūras. Failų turinys nepatenka į jūsų įrenginį, todėl slapti dokumentai, užšifruoti archyvai ar duomenų bazės išklotinės gali būti maišomos konfidencialiai. Šis metodas taip pat garantuoja stabilų veikimą, nepriklausomai nuo pralaidumo.

Kokio dydžio failą galiu naudoti maišą naudojant šį įrankį?

Skaičiavimas atliekamas srautiniu būdu blokais, todėl limitas iš esmės priklauso nuo atminties ir laiko, kurį jūsų naršyklė gali skirti operacijai. Standartiniame kompiuteryje be vargo praeina keli šimtai megabaitų. Kelių gigabaitų failams (pilnas ISO, didelis išvestis) rinkitės sistemos komandų eilutę (sha256sum, Get-FileHash), kuri geriau naudoja disko ir procesoriaus išteklius.

Kuo skiriasi failo maišos nustatymas nuo teksto maišos?

Algoritmas yra visiškai tas pats, keičiasi tik įvestis. Tekstui mes sumaišome eilutės baitų seką tam tikra koduote (paprastai UTF-8). Failo neapdorotam dvejetainiam turiniui baitas po baito maišos, įskaitant visas įterptas antraštes arba metaduomenis. Štai kodėl tekstinis failas ir jo turinys, nukopijuotas į formą, gali suteikti skirtingas kontrolines sumas (KS, eilučių pabaigas, kodavimą).

Kodėl kiekvieno kūrimo ZIP archyvo kontrolinė suma skiriasi?

Dauguma archyvatorių (ZIP, TAR.GZ, 7z) saugo kintamus metaduomenis, tokius kaip sukūrimo data, failų tvarka arba glaudinimo indikatoriai. Todėl iš naujo sukūrus archyvą su tuo pačiu turiniu, gaunama skirtinga dvejetainė ir kitokia kontrolinė suma. Norėdami gauti atkuriamus archyvus, naudokite tokius įrankius kaip diffoscope, strip-nondeterminism arba --mtime ir --sort=name parinktis tar.

Ar yra greitesnių SHA-256 alternatyvų norint patikrinti vientisumą?

Taip. BLAKE2 ir BLAKE3 yra modernios kriptografinės maišos funkcijos, sukurtos greičiau nei SHA-256, tuo pačiu užtikrinant lygiavertį ar aukštesnį saugumo lygį. BLAKE3 ypač gerai išnaudoja SIMD ir kelių branduolių lygiagretumą, todėl jis labai efektyvus dideliuose failuose. Kad būtų galima aptikti grynai nepriekaištingą klaidą, xxHash yra neprilygstama sparta, bet išlieka nekriptografinė.

Ar galiu palyginti du failus neapskaičiuodamas visos maišos?

Dviejų vietinių failų atveju tiesioginis dvejetainis palyginimas (cmp „Unix“, fc /b sistemoje „Windows“) yra greitesnis nei abiejų maišos nustatymas. Maiša tampa naudinga, kai failai yra ne tame pačiame įrenginyje arba kai norite išlaikyti trumpą pėdsaką nepalikdami originalo. Norėdami dažnai tikrinti didelius kiekius, indeksuokite maišas duomenų bazėje ir palyginkite pirštų atspaudus, o ne visus failus.

Užklausos pavyzdys

curl -X POST https://cdrn.fr/api/v1/tools/hash-file-generator/execute \
  -F "file=@/path/to/file" \
  -F "algorithm=adler32"

Įvesties schema

Laukas Tipas Privalomas Numatytasis
file file
algorithm choice (adler32, crc32, crc32b, crc32c, fnv132, fnv164, fnv1a32, fnv1a64, gost, gost-crypto, haval128,3, haval128,4, haval128,5, haval160,3, haval160,4, haval160,5, haval192,3, haval192,4, haval192,5, haval224,3, haval224,4, haval224,5, haval256,3, haval256,4, haval256,5, joaat, md2, md4, md5, murmur3a, murmur3c, murmur3f, ripemd128, ripemd160, ripemd256, ripemd320, sha1, sha224, sha256, sha3-224, sha3-256, sha3-384, sha3-512, sha384, sha512, sha512/224, sha512/256, snefru, snefru256, tiger128,3, tiger128,4, tiger160,3, tiger160,4, tiger192,3, tiger192,4, whirlpool, xxh128, xxh3, xxh32, xxh64)

šis įrankis tikisi failo - naudokite Content-Type multipart/form-data vietoj application/json

Galiniai taškai

  • GET https://cdrn.fr/api/v1/tools - išvardija visus galimus įrankius
  • GET https://cdrn.fr/api/v1/tools/hash-file-generator - gauna šio įrankio schemą
  • POST https://cdrn.fr/api/v1/tools/hash-file-generator/execute - vykdo šį įrankį su JSON payload