Fájl checksum számítása
- Irányítópult
- Dokumentáció
- API
Mi az a checksum (ellenőrző összeg)?
A checksum (ellenőrző összeg, néha chksum-ként írva) egy egyedi digitális ujjlenyomat, amelyet egy fájl tartalmából számítanak ki egy hashelési algoritmus segítségével. Ezt az ujjlenyomatot, vagy fingerprintet, általában fix hosszúságú hexadecimális karakterláncként ábrázolják.
Egy jó hashelési algoritmus alapvető tulajdonsága a lavinaeffektus: a forrásfájl bármilyen módosítása, akár egyetlen bit megváltoztatása is, radikálisan eltérő checksumot eredményez. Két szigorúan azonos tartalmú fájl mindig ugyanazt a checksumot adja, függetlenül a fájlnévtől, a módosítás dátumától vagy az operációs rendszertől.
A checksum elsősorban egy fájl integritásának ellenőrzésére szolgál: ha a helyileg újraszámított ujjlenyomat megegyezik a közzétevő által bejelentettel, a fájl sértetlen. Ellenkező esetben módosult, sérült az átvitel során, vagy megváltoztatták.
Mire jó ez a gyakorlatban?
- Letöltés integritásának ellenőrzése: egy Linux ISO (Debian, Ubuntu, Fedora, Arch), egy Docker image, egy Windows telepítő vagy egy nyílt forráskódú archívum szisztematikusan közzétesz egy hivatalos checksumot. Ennek helyi újraszámítása megerősíti, hogy a fájl teljes és sértetlen.
- Átviteli hiba észlelése: egy megszakadt letöltés, egy hibás lemezszektor, instabil RAM, egy rossz hálózati kábel vagy egy USB-kulcsra való másolás bájtokat sérthet meg. A checksum azonnal felfedi ezeket a csendes hibákat.
- Aláírás ujjlenyomata: megerősíteni, hogy egy fájl valóban az elvárt szerzőtől származik, ha a checksumot biztonságos csatornán (HTTPS, GPG aláírás) terjesztik. Ez a mechanizmus az alapja a Linux csomagtárolóknak és az alkalmazásboltoknak.
- Verziókezelés és gyorsítótárazás: a Git minden commitot, blobot és fát egy SHA-1 hash-sel azonosít (folyamatban van az átállás SHA-256-ra). A CDN-ek és webes bundlerek (Webpack, Vite, esbuild) hasht injektálnak a fájlnévbe (
app.4a8f2c.js), hogy változás esetén automatikusan érvénytelenítsék a böngésző gyorsítótárát. - Duplikátumok észlelése és deduplikáció: inkrementális biztonsági mentések (Borg, Restic, rsync), fájlrendszerek (ZFS) és objektumtárolók hash alapján azonosítják az azonos blokkokat, hogy csak egyetlen másolatot tároljanak.
- Feltöltés validálása: a kliens elküldi az elvárt checksumot, a szerver pedig átvételkor újraszámítja azt. Az AWS S3 például elfogad egy
Content-MD5vagyx-amz-checksum-sha256fejlécet a sérült feltöltések elutasításához. - Threat intelligence és vírusirtás: a VirusTotal és a vírusirtó szoftverek SHA-256 hash alapján indexelik a rosszindulatú fájlokat, ami lehetővé teszi az észlelést a teljes bináris továbbítása nélkül.
Támogatott algoritmusok és különbségek
- MD5 (128 bit, 32 hexadecimális karakter): gyors, széles körben elterjedt, de kriptográfiailag feltört. Az MD5 ütközések (collisions) 2004 óta másodpercek alatt kiszámíthatók hétköznapi hardvereken. Csak nem rosszindulatú integritásellenőrzésre használható (letöltés hálózati megszakadás ellen, helyi biztonsági mentés). Tilos minden biztonsági funkcióhoz, aláíráshoz vagy autentikációhoz.
- SHA-1 (160 bit, 40 hexadecimális karakter): a 2017-es SHAttered támadás óta kriptográfiához elavultnak számít, amely valós ütközést mutatott be két különböző PDF között. A Git alapértelmezés szerint még mindig ezt használja, de migrál az SHA-256-ra. Ne használja tovább aláírásra vagy autentikációra.
- SHA-256 (256 bit, 64 hexadecimális karakter): modern szabvány, az SHA-2 család tagja. A modern TLS tanúsítványok, a Linux csomagaláírások (apt, dnf, pacman), a Bitcoin és a hivatalos integritásellenőrzések alapja. Lassabb, mint az MD5, de a jelenlegi ismeretek szerint biztonságos.
- SHA-512 (512 bit, 128 hexadecimális karakter): az SHA-2 család 64 bites változata. Natívan 64 bites szavakat kezel, ami néha gyorsabbá teszi, mint az SHA-256-ot 64 bites CPU-kon. Hosszabb ujjlenyomat, magasabb biztonsági tartalék.
- CRC32 (32 bit, 8 hexadecimális karakter): nem kriptográfiai, ultra-gyors, kifejezetten az átviteli hibák észlelésére tervezték. Az Ethernet, ZIP, PNG, gzip használja. Nem véd a rosszindulatú módosítások ellen: egy támadó triviálisan készíthet olyan fájlt, amelynek ugyanaz a CRC32-je, mint egy másiknak. Gyors hardveres ellenőrzésekre alkalmas, nem biztonságra.
Felhasználási esetek
- Linux ISO ellenőrzése: a Debian, Ubuntu, Fedora és Arch közzéteszi minden hivatalos képfájl SHA-256 és SHA-512 összegét, gyakran GPG-vel ellenjegyezve.
- Aláírt bináris validálása: megerősíteni, hogy egy tüköroldalról letöltött futtatható fájlt nem cseréltek-e ki egy fertőzött verzióra.
- Két verzió összehasonlítása: módosítás előtt és után az azonos checksum bitenkénti azonosságot bizonyít a fájlok terjesztése nélkül.
- Feltöltés validálása: a kliens elküld egy checksumot, a szerver pedig átvételkor újraszámítja azt a sérülésmentesség megerősítéséhez.
- Ujjlenyomatvétel (Fingerprinting): botok vagy ismert fájlok észlelése ujjlenyomat-adatbázisokban (vírusirtó, threat intelligence, duplikátumkeresés).
Hogyan kell használni
- Húzza a fájlt a kijelölt területre, vagy használja a kiválasztó gombot.
- Válassza ki az algoritmust: MD5, SHA-1, SHA-256, SHA-512 vagy CRC32.
- Megjelenik a checksum, készen a másolásra.
- Hasonlítsa össze a kapott értéket a referenciaértékkel (amelyet a kiadó tett közzé vagy helyileg tárolt).
A számítás helyileg, a böngészőjében történik, a fájl távoli szerverre való elküldése nélkül. A tartalom bizalmas marad.
Hogyan ellenőrizhető egy letöltés checksum segítségével?
A standard ellenőrzési folyamat a következő:
- A hivatalos weboldal közzéteszi az elvárt checksumot, például
d41d8cd98f00b204e9800998ecf8427eMD5 esetén, vagy egy 64 karakteres karakterláncot SHA-256 esetén. - Töltse le a fájlt.
- Számítsa ki a checksumját vagy ezzel az eszközzel, vagy parancssorból.
- Hasonlítsa össze: ha a két karakterlánc karakterről karakterre szigorúan megegyezik, a fájl sértetlen. Ha eltérnek, akár csak egyetlen karakterben is, a fájl sérült vagy manipulált: ne használja, töltse le újra.
Parancssorban Linux alatt:
# Checksum kiszámítása
md5sum fajl.iso
sha1sum fajl.iso
sha256sum fajl.iso
sha512sum fajl.iso
cksum fajl.iso # CRC32 + méret
# Automatikus ellenőrzés a kiadó által közzétett .sha256 fájlból
sha256sum -c fajl.iso.sha256
# Megjeleníti: "fajl.iso: OK", ha a checksum megegyezik
macOS alatt:
md5 fajl.iso
shasum -a 1 fajl.iso
shasum -a 256 fajl.iso
shasum -a 512 fajl.iso
# Ellenőrzés referenciafájlból
shasum -a 256 -c fajl.iso.sha256
Windows alatt (PowerShell):
Get-FileHash fajl.iso -Algorithm MD5
Get-FileHash fajl.iso -Algorithm SHA1
Get-FileHash fajl.iso -Algorithm SHA256
Get-FileHash fajl.iso -Algorithm SHA512
# Összehasonlítás egy elvárt értékkel
(Get-FileHash fajl.iso -Algorithm SHA256).Hash -eq "ABC123..."
Algoritmusok gyors összehasonlítása
| Algoritmus | Méret | Sebesség | Javasolt felhasználás |
|---|---|---|---|
| CRC32 | 32 bit | Nagyon gyors | Hálózati vagy tárolási hibák észlelése, nem kriptográfiai |
| MD5 | 128 bit | Gyors | Csak nem ellenséges integritás, biztonságra kerülendő |
| SHA-1 | 160 bit | Gyors | Elavult, régi kompatibilitás (Git, régi csomagok) |
| SHA-256 | 256 bit | Mérsékelt | Jelenlegi szabvány, integritásellenőrzés és aláírások |
| SHA-512 | 512 bit | Gyors 64 biten | Integritásellenőrzés, magasabb biztonsági tartalék |
GYIK
MD5-öt vagy SHA-256-ot használjak az ISO-m ellenőrzéséhez?
Alapértelmezés szerint az SHA-256-ot. Szinte minden modern Linux disztribúció közzéteszi az SHA-256 és SHA-512 összegeket, néha az MD5 mellett a történelmi kompatibilitás érdekében. Ha a kiadó csak MD5-öt tesz közzé, és tart a feltöréstől, követeljen SHA-256-ot, vagy ellenőrizze a checksum fájl GPG aláírását. Ha csak letöltési hibától tart, az MD5 technikailag elegendő.
Garantálja a checksum a fájlom biztonságát?
Önmagában nem. A checksum az integritást bizonyítja, nem a hitelességet. Ha egy támadó irányítja a letöltő szervert, közzétehet egy módosított fájlt és annak módosított checksumját is. A valódi biztonságot a digitális aláírás (GPG, code signing) adja, amely a checksumot egy ismert privát kulcshoz köti. Mindig HTTPS-en keresztül szerezze be a checksumot, vagy még jobb, ha ellenőrizhető GPG aláíráson keresztül.
Nem egyezik a checksumom, mit tegyek?
Először is ellenőrizze, hogy a megfelelő algoritmust hasonlítja-e össze: egy SHA-256 nem egyezhet meg egy SHA-1-gyel. Ezután próbálja meg újra a letöltést, ideális esetben egy másik tüköroldalról: a leggyakoribb ok a hálózati megszakadás. Ha az eltérés több próbálkozás után is fennáll, gyanakodjon a tüköroldal kompromittálódására: térjen vissza a hivatalos forráshoz, és ellenőrizze a GPG aláírást, ha létezik. Soha ne futtassa vagy használja a fájlt, amíg a checksum nem egyezik.
Miért elavult az MD5?
Az MD5 gyakorlati ütközésektől szenved: lehetséges két különböző fájlt készíteni, amelyeknek pontosan ugyanaz az MD5 hash-e, mindezt másodpercek alatt. Ez a tulajdonság megsérti a kriptográfiai hash funkció lényegét. Konkrétan egy támadó létrehozhat egy rosszindulatú binárist, amelynek ugyanaz az MD5-je, mint egy legitim binárisnak. Az SHA-1 ugyanezzel a problémával küzd 2017 óta (SHAttered támadás). 2026-ban már csak az SHA-256, az SHA-512 és változataik tekinthetők biztonságosnak.
Mi a különbség a hash és a checksum között?
A hash egy hashelési funkció általános eredménye. A checksum egy olyan hash, amelyet kifejezetten egy adat integritásának ellenőrzésére használnak. Minden checksum hash, de nem minden hash checksum: egy jelszó-hash (bcrypt, argon2) autentikációra szolgál, egy hash egy hashtáblában a gyors indexelésre. A fingerprint vagy ujjlenyomat kifejezés a checksum elterjedt szinonimája.
Elegendő a CRC32 az igényeimhez?
A CRC32 elegendő, ha csak véletlen sérüléseket akar észlelni nem ellenséges csatornán: belső hálózati átvitel, ZIP archívum ellenőrzése, memóriabeli konzisztencia-ellenőrzés. Mindössze 32 bittel két véletlenszerű fájlnak körülbelül 1 a 4 milliárdhoz az esélye, hogy véletlenül ugyanaz legyen a CRC32-je, ami elegendő a hibaészleléshez. A CRC32 elégtelen, amint egy támadó befolyásolhatja a tartalmat: triviális egy fájlt úgy módosítani, hogy egy adott CRC32-t adjon. Minden rosszindulatú kockázattal szembeni ellenőrzéshez használjon SHA-256-ot.
Miért tér el a checksumom az operációs rendszertől függően?
Ugyanazon bináris tartalom checksumja mindenhol azonos. Ha két különböző eredményt kap, akkor a fájlok valóban eltérnek: sorvégek (Windows CRLF szemben a Unix LF-fel) szöveges módban történő FTP átvitel után, módosult szövegkódolás megnyitáskor, a rendszer által hozzáadott metaadatok (macOS Spotlight felbontás, kiterjesztett attribútumok) vagy egy átviteli kliens általi csendes újratömörítés. Mindig bináris módban továbbítsa a fájlokat.
Checksum vagy digitális aláírás?
A checksum azt bizonyítja, hogy egy fájl nem változott meg a közzététel és a fogadás között, feltéve, hogy a checksumot biztonságos csatornán szerezzük be. A digitális aláírás (GPG, PGP, Authenticode code signing) ezen felül a szerző személyazonosságát is bizonyítja egy privát kulcs segítségével. Az aláírás magában foglalja és megerősíti a checksumot: a Debian, a Tor vagy a Bitcoin Core standard gyakorlata a checksum fájl GPG-vel való aláírása, majd ezen checksumok használata a binárisok ellenőrzésére.
Gyakran ismételt kérdések
Elküldik a fájlt egy szerverre a checksum kiszámításához?
Nem. A számítás teljes egészében az Ön böngészőjében történik a Web Crypto API és helyi JavaScript rutinok segítségével. A fájl tartalma nem hagyja el az Ön gépét, ami lehetővé teszi érzékeny dokumentumok, titkosított archívumok vagy adatbázis-dumpok bizalmas hashelését. Ez a megközelítés stabil, a sávszélességtől független teljesítményt is garantál.
Mekkora fájlméretet tudok hashelni ezzel az eszközzel?
A számítás blokkonkénti streaminggel történik, így a korlát alapvetően attól függ, hogy a böngészője mennyi memóriát és időt tud a műveletre fordítani. Néhány száz megabájt gond nélkül feldolgozható egy átlagos gépen. Több gigabájtos fájlok esetén (teljes ISO, nagy dump) részesítse előnyben a rendszer parancssorát (sha256sum, Get-FileHash), amely jobban kihasználja a lemez- és CPU-erőforrásokat.
Mi a különbség egy fájl és egy szöveg hashelése között?
Az algoritmus szigorúan ugyanaz, csak a bemenet tér el. Szöveg esetén a karakterlánc bájtsorozatát hasheljük egy adott kódolásban (jellemzően UTF-8). Fájl esetén a nyers bináris tartalmat hasheljük bájtról bájtra, beleértve az esetleges beágyazott fejléceket vagy metaadatokat is. Ezért adhat egy szövegfájl és annak egy űrlapba másolt tartalma különböző checksumokat (BOM, sorvégek, kódolás).
Miért változik egy ZIP archívum checksumja minden létrehozáskor?
A legtöbb archiváló (ZIP, TAR.GZ, 7z) változó metaadatokat tárol, mint például a létrehozás dátuma, a fájlok sorrendje vagy a tömörítési indikátorok. Az azonos tartalommal újra létrehozott archívum tehát eltérő binárist és eltérő checksumot eredményez. Reprodukálható archívumokhoz használjon olyan eszközöket, mint a diffoscope, strip-nondeterminism, vagy a tar --mtime és --sort=name opcióit.
Léteznek-e az SHA-256-nál gyorsabb alternatívák az integritás ellenőrzésére?
Igen. A BLAKE2 és a BLAKE3 modern kriptográfiai hash funkciók, amelyeket úgy terveztek, hogy gyorsabbak legyenek az SHA-256-nál, miközben azonos vagy magasabb biztonsági szintet nyújtanak. A BLAKE3 különösen jól kihasználja a SIMD és többmagos párhuzamosságot, ami nagyon hatékonnyá teszi nagy fájlokon. A tisztán nem ellenséges hibaészleléshez az xxHash verhetetlen sebességben, de nem kriptográfiai.
Összehasonlíthatok két fájlt a teljes hash-ük kiszámítása nélkül?
Két helyi fájl esetén a közvetlen bináris összehasonlítás (cmp Unix alatt, fc /b Windows alatt) gyorsabb, mint mindkettő hashelése. A hash akkor válik hasznossá, ha a fájlok nem ugyanazon a gépen vannak, vagy ha rövid ujjlenyomatot akarunk megőrizni az eredeti megtartása nélkül. Nagy mennyiségű fájl gyakori ellenőrzéséhez indexelje a hash-eket egy adatbázisban, és az ujjlenyomatokat hasonlítsa össze a teljes fájlok helyett.
Kérés példa
curl -X POST https://cdrn.fr/api/v1/tools/hash-file-generator/execute \
-F "file=@/path/to/file" \
-F "algorithm=adler32"
Bemeneti séma
| Mező | Típus | Kötelező | Alapértelmezett |
|---|---|---|---|
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) | ✓ | – |
ez az eszköz fájlt vár - használjon Content-Type multipart/form-data értéket application/json helyett
Végpontok
GET https://cdrn.fr/api/v1/tools- listázza az összes elérhető eszköztGET https://cdrn.fr/api/v1/tools/hash-file-generator- lekéri ezen eszköz sémájátPOST https://cdrn.fr/api/v1/tools/hash-file-generator/execute- végrehajtja ezen eszközt JSON payloaddal