Calcularea checksum-ului unui fișier

calculează suma de control (checksum) a unui fișier în MD5, SHA-1, SHA-256 sau SHA-512. Ideal pentru a verifica integritatea unei descărcări sau a detecta o alterare

Ce este un checksum?

Un checksum (sumă de control, uneori ortografiat chksum) este o amprentă digitală unică calculată plecând de la conținutul unui fișier de către un algoritm de hashing. Această amprentă, sau fingerprint, este în general reprezentată printr-un șir hexazecimal de lungime fixă.

Proprietatea fundamentală a unui bun algoritm de hashing este efectul de avalanșă: orice modificare a fișierului sursă, fie și a unui singur bit, produce un checksum radical diferit. Două fișiere cu conținut strict identic produc întotdeauna același checksum, independent de numele fișierului, de data modificării sau de sistemul de operare.

Checksum-ul servește în principal la verificarea integrității unui fișier: dacă amprenta recalculată local corespunde celei anunțate de editor, fișierul este intact. Altfel, a fost alterat, corupt în tranzit, sau modificat.

La ce servește concret?

  • Verificarea integrității unui download: o ISO Linux (Debian, Ubuntu, Fedora, Arch), o imagine Docker, un installer Windows sau o arhivă open source publică sistematic un checksum oficial. Recalcularea sa local confirmă că fișierul este complet și nealterat.
  • Detectarea unei corupții în tranzit: un download întrerupt, un sector de disc defectuos, o RAM instabilă, un cablu de rețea capricios, sau o copie pe stick USB pot corupe octeți. Checksum-ul dezvăluie imediat aceste erori silențioase.
  • Amprentă de semnătură: a confirma că un fișier provine într-adevăr de la autorul așteptat când checksum-ul este difuzat printr-un canal sigur (HTTPS, semnătură GPG). Este mecanismul la baza depozitelor de pachete Linux și a magazinelor de aplicații.
  • Versioning și caching: Git identifică fiecare commit, blob și arbore printr-un hash SHA-1 (în migrare spre SHA-256). CDN-urile și bundler-ele web (Webpack, Vite, esbuild) injectează un hash în numele fișierului (app.4a8f2c.js) pentru a invalida automat cache-ul browserului la o schimbare.
  • Detectarea duplicatelor și deduplicare: backup-uri incrementale (Borg, Restic, rsync), sisteme de fișiere (ZFS), și stocaje obiect identifică blocurile identice prin hash-ul lor pentru a stoca doar o copie.
  • Validarea unui upload: un client trimite checksum-ul așteptat, serverul îl recalculează la recepție. AWS S3, de exemplu, acceptă un header Content-MD5 sau x-amz-checksum-sha256 pentru a respinge un upload corupt.
  • Threat intelligence și antivirus: VirusTotal și editorii de antivirus indexează fișierele malițioase prin hash-ul lor SHA-256, ceea ce permite o detectare fără a transmite binarul complet.

Algoritmi suportați și diferențe

  • MD5 (128 biți, 32 caractere hexazecimale): rapid, larg difuzat, dar spart criptografic. Coliziuni MD5 sunt calculabile în câteva secunde pe hardware curent din 2004. De utilizat doar pentru verificarea de integritate nemalițioasă (download contra unei întreruperi de rețea, backup local). Proscris pentru orice funcție de securitate, semnătură sau autentificare.
  • SHA-1 (160 biți, 40 caractere hexazecimale): depreciat pentru criptografie din atacul SHAttered din 2017, care a demonstrat o coliziune reală între două PDF-uri distincte. Git îl utilizează încă implicit dar migrează spre SHA-256. Nu mai utiliza pentru semnare sau autentificare.
  • SHA-256 (256 biți, 64 caractere hexazecimale): standard modern, membru al familiei SHA-2. Bază a certificatelor TLS moderne, semnăturilor de pachete Linux (apt, dnf, pacman), Bitcoin, și controalelor de integritate oficiale. Mai lent decât MD5 dar sigur în starea cunoștințelor actuale.
  • SHA-512 (512 biți, 128 caractere hexazecimale): variantă 64-bit a SHA-2. Manipulează cuvinte de 64 biți nativ, ceea ce îl face uneori mai rapid decât SHA-256 pe CPU 64-bit. Amprentă mai lungă, marjă de securitate superioară.
  • CRC32 (32 biți, 8 caractere hexazecimale): necriptografic, ultra-rapid, conceput specific pentru a detecta erorile de transmitere. Utilizat de Ethernet, ZIP, PNG, gzip. Nu protejează contra malițiozității: un atacator poate trivial forja un fișier cu același CRC32 ca altul. Adaptat controalelor hardware rapide, nu securității.

Cazuri de utilizare

  • Verificarea unei ISO Linux: Debian, Ubuntu, Fedora și Arch publică SHA-256 și SHA-512 ale fiecărei imagini oficiale, adesea contrasemnate în GPG.
  • Validarea unui binar semnat: a confirma că un executabil descărcat de la o oglindă nu a fost înlocuit cu o versiune capcanată.
  • Compararea a două versiuni: înainte și după o modificare, un checksum identic dovedește identitatea bit cu bit, fără a fi nevoie să se difuzeze fișierele.
  • Validarea unui upload: clientul trimite un checksum, serverul îl recalculează la recepție pentru a confirma absența corupției.
  • Fingerprinting: detectarea de boți sau de fișiere cunoscute în baze de amprente (antivirus, threat intelligence, căutare de dubluri).

Cum să-l utilizezi

  1. Glisează-depune fișierul în zona prevăzută, sau utilizează butonul de selecție.
  2. Alege algoritmul: MD5, SHA-1, SHA-256, SHA-512 sau CRC32.
  3. Checksum-ul se afișează, gata de copiat.
  4. Compară valoarea obținută cu cea de referință (publicată de editor sau păstrată local).

Calculul se face local în browserul tău, fără trimitere a fișierului la un server distant. Conținutul rămâne confidențial.

Cum să verifici un download cu checksum?

Procedura standard de verificare este următoarea:

  1. Site-ul oficial publică checksum-ul așteptat, de exemplu d41d8cd98f00b204e9800998ecf8427e pentru MD5 sau un șir de 64 de caractere pentru SHA-256.
  2. Descarcă fișierul.
  3. Calculează checksum-ul său, fie cu acest instrument, fie din linia de comandă.
  4. Compară: dacă cele două șiruri sunt strict identice, caracter cu caracter, fișierul este intact. Dacă diferă, fie și de un singur caracter, fișierul este corupt sau modificat: nu-l utiliza, descarcă-l din nou.

În linia de comandă sub Linux:


# Calculează checksum-ul
md5sum fisier.iso
sha1sum fisier.iso
sha256sum fisier.iso
sha512sum fisier.iso
cksum fisier.iso          # CRC32 + dimensiune

# Verifică automat dintr-un fișier .sha256 publicat de editor
sha256sum -c fisier.iso.sha256
# Afișează: "fisier.iso: OK" dacă checksum-ul corespunde

Sub macOS:


md5 fisier.iso
shasum -a 1 fisier.iso
shasum -a 256 fisier.iso
shasum -a 512 fisier.iso

# Verificare dintr-un fișier de referință
shasum -a 256 -c fisier.iso.sha256

Sub Windows (PowerShell):


Get-FileHash fisier.iso -Algorithm MD5
Get-FileHash fisier.iso -Algorithm SHA1
Get-FileHash fisier.iso -Algorithm SHA256
Get-FileHash fisier.iso -Algorithm SHA512

# Compară cu o valoare așteptată
(Get-FileHash fisier.iso -Algorithm SHA256).Hash -eq "ABC123..."

Comparație rapidă a algoritmilor

Algoritm Dimensiune Viteză Utilizare recomandată
CRC32 32 biți Foarte rapid Detectare de erori rețea sau stocare, necriptografic
MD5 128 biți Rapid Integritate nemalițioasă doar, de evitat în securitate
SHA-1 160 biți Rapid Obsolet, compatibilitate veche (Git, pachete vechi)
SHA-256 256 biți Moderată Standard actual, verificare de integritate și semnături
SHA-512 512 biți Rapid în 64 biți Verificare de integritate, marjă de securitate superioară

FAQ

MD5 sau SHA-256 pentru a verifica ISO-ul meu?

SHA-256 implicit. Aproape totalitatea distribuțiilor Linux moderne publică SHA-256 și SHA-512, uneori alături de MD5 pentru compatibilitate istorică. Dacă editorul publică doar MD5 și te temi de o compromitere, cere SHA-256 sau verifică semnătura GPG a fișierului de checksum-uri. Dacă te temi doar de o corupție la download, MD5 este tehnic suficient.

Garantează checksum-ul securitatea fișierului meu?

Nu, nu singur. Un checksum dovedește integritatea, nu autenticitatea. Dacă un atacator controlează serverul de download, poate publica un fișier modificat și checksum-ul său modificat. Securitatea reală vine dintr-o semnătură numerică (GPG, code signing) care leagă checksum-ul de o cheie privată cunoscută. Recuperează întotdeauna checksum-ul prin HTTPS sau, mai bine, printr-o semnătură GPG verificabilă.

Checksum-ul meu nu corespunde, ce să fac?

Mai întâi, verifică dacă compari algoritmul potrivit: un SHA-256 nu poate corespunde unui SHA-1. Apoi, reia download-ul, ideal de la altă oglindă: cauza cea mai frecventă este o întrerupere de rețea. Dacă diferența persistă după mai multe încercări, suspectează o compromitere a oglinzii: urcă la sursa oficială și verifică semnătura GPG dacă există. Niciodată să nu execute sau utilizeze fișierul atâta timp cât checksum-ul nu corespunde.

De ce MD5 este depreciat?

MD5 suferă de coliziuni practice: este posibil să se construiască două fișiere diferite având exact același hash MD5 în câteva secunde. Această proprietate violează funcția însăși a unui hash criptografic. Concret, un atacator poate crea un binar malițios având același MD5 ca un binar legitim. SHA-1 suferă de aceeași problemă din 2017 (atac SHAttered). Doar SHA-256, SHA-512 și variantele lor rămân considerate sigure în 2026.

Diferența între hash și checksum?

Un hash este rezultatul generic al unei funcții de hashing. Un checksum este un hash utilizat specific pentru a verifica integritatea unei date. Toate checksum-urile sunt hash-uri, dar nu toate hash-urile sunt checksum-uri: un hash de parolă (bcrypt, argon2) servește autentificării, un hash într-un tabel de hashing servește indexării rapide. Termenul fingerprint sau amprentă este un sinonim curent al checksum-ului.

Este CRC32 suficient pentru nevoile mele?

CRC32 este suficient dacă cauți doar să detectezi o corupție accidentală pe un canal neostil: transfer rețea intern, verificare arhivă ZIP, control de coerență în memorie. Cu doar 32 de biți, două fișiere aleatorii au aproximativ 1 șansă din 4 miliarde de a avea același CRC32 din întâmplare, ceea ce este suficient pentru o detectare de eroare. CRC32 este insuficient imediat ce un atacator poate influența conținutul: este trivial de forjat un fișier cu un CRC32 țintă. Pentru orice verificare în fața unui risc malițios, utilizează SHA-256.

De ce checksum-ul meu diferă în funcție de OS?

Checksum-ul aceluiași conținut binar este identic peste tot. Dacă obții două rezultate diferite, înseamnă că fișierul diferă realmente: sfârșituri de linie (CRLF Windows contra LF Unix) după un transfer FTP în mod text, codare a textului modificată la deschidere, metadate adăugate de sistem (rezoluție Spotlight macOS, atribute extinse), sau recompresie silențioasă de către un client de transfer. Întotdeauna transferă în mod binar.

Checksum sau semnătură numerică?

Un checksum dovedește că un fișier nu a fost alterat între publicare și recepție, cu condiția să se recupereze checksum-ul printr-un canal sigur. O semnătură numerică (GPG, PGP, code signing Authenticode) dovedește în plus identitatea autorului datorită unei chei private. Semnătura înglobează și întărește checksum-ul: practica standard la Debian, Tor, sau Bitcoin Core este să semneze în GPG fișierul de checksum-uri, apoi să utilizeze aceste checksum-uri pentru a verifica binarele.

Întrebări frecvente

Fișierul este trimis la un server pentru calcularea checksum-ului?

Nu. Calculul se efectuează integral în browserul tău datorită API-ului Web Crypto și rutinelor JavaScript locale. Conținutul fișierului nu părăsește mașina ta, ceea ce permite hashing-ul în deplină confidențialitate a documentelor sensibile, arhivelor criptate sau dump-urilor de bază de date. Această abordare garantează de asemenea performanțe stabile, independente de lățimea de bandă.

Ce dimensiune de fișier pot să hashez cu acest instrument?

Calculul se face în streaming pe blocuri, deci limita depinde în principal de memoria și timpul pe care browserul îl poate consacra operației. Câteva sute de megabyte trec fără dificultate pe un post standard. Pentru fișiere de mai mulți gigabyte (ISO completă, dump voluminos), preferă linia de comandă sistem (sha256sum, Get-FileHash) care exploatează mai bine resursele de disc și CPU.

Care este diferența între a hash-ui un fișier și a hash-ui text?

Algoritmul este riguros același, doar intrarea se schimbă. Pentru un text, se hashuiește secvența de octeți a șirului într-o codare dată (tipic UTF-8). Pentru un fișier, se hashuiește conținutul binar brut, octet cu octet, inclusiv eventualele header-e sau metadate integrate. De aceea un fișier text și conținutul său copiat într-un formular pot da checksum-uri diferite (BOM, sfârșituri de linie, codare).

De ce checksum-ul unei arhive ZIP variază la fiecare creare?

Majoritatea arhivatoarelor (ZIP, TAR.GZ, 7z) stochează metadate variabile precum data de creare, ordinea fișierelor sau indicatori de compresie. Recrearea unei arhive cu același conținut produce deci un binar diferit și un checksum diferit. Pentru a obține arhive reproductibile, utilizează instrumente precum diffoscope, strip-nondeterminism sau opțiunile --mtime și --sort=name ale lui tar.

Există alternative mai rapide decât SHA-256 pentru a verifica integritatea?

Da. BLAKE2 și BLAKE3 sunt funcții de hashing criptografice moderne, concepute să fie mai rapide decât SHA-256 oferind un nivel de securitate echivalent sau superior. BLAKE3 exploatează în mod special paralelismul SIMD și multi-core, ceea ce îl face foarte eficient pe fișiere mari. Pentru pura detectare de erori nemalițioasă, xxHash este de neînvins în viteză, dar rămâne necriptografic.

Pot compara două fișiere fără să calculez hash-ul lor întreg?

Pentru două fișiere locale, o comparație binară directă (cmp sub Unix, fc /b sub Windows) este mai rapidă decât hashing-ul a două. Hash-ul devine util când fișierele nu sunt pe aceeași mașină, sau când se vrea păstrarea unei amprente scurte fără a păstra originalul. Pentru controale frecvente pe volume mari, indexează hash-urile într-o bază și compară amprentele în loc de fișierele complete.

Exemplu de cerere

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

Schema de intrare

Câmp Tip Obligatoriu Implicit
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)

acest instrument așteaptă un fișier - utilizați Content-Type multipart/form-data în loc de application/json

Puncte de acces

  • GET https://cdrn.fr/api/v1/tools - listează toate instrumentele disponibile
  • GET https://cdrn.fr/api/v1/tools/hash-file-generator - obține schema acestui instrument
  • POST https://cdrn.fr/api/v1/tools/hash-file-generator/execute - execută acest instrument cu un payload JSON