Comparare binară a fișierelor — diferență octet cu octet, aliniere pe blocuri și analiză la nivel de bit
Comparare binară a fișierelor
Se trag două fișiere, iar această pagină le compară octet cu octet, direct în browser: fiecare decalaj diferit, o diferență hexazecimală cu contextul din jur, o hartă a densității diferențelor și o analiză la nivel de bit care arată ce biți s-au schimbat. Un mod aliniat pe blocuri separat detectează inserții și ștergeri la mijlocul unui fișier — cazul pe care o diferență simplă octet cu octet nu îl poate alinia.
Rezultatele se exportă în TXT și CSV. Nimic nu se încarcă nicăieri.
Pentru modificarea octeților în loc de comparare, vezi editorul hexazecimal; pentru text, instrumentul Diferențe text.
1. Se aleg două fișiere
FIȘIERUL A Fișierul întâi se trage aici, sau se face clic pentru a-l alege Până la 200 MB. Rămâne pe acest calculator.
FIȘIERUL B Fișierul al doilea se trage aici, sau se face clic pentru a-l alege Comparat cu Fișierul A.
Context hexazecimal în jurul fiecărei diferențe: — diferențele vecine aflate la mai puțin de 16 octeți una de alta sunt afișate ca un singur bloc.
2. Verdict
Rezumatul comparației apare aici după ce ambele fișiere sunt alese și comparate.
Densitatea diferențelor (roșu: octeți diferiți, portocaliu: octeți pe care îi are doar un fișier):
0x0
Analiză la nivel de bit — ce poziții de bit s-au schimbat (din fiecare octet diferit, A XOR B):
3. Diferențe — vizualizare hexazecimală
| roșu = Fișierul A, verde = Fișierul B, rândurile identice sunt afișate o singură dată
Loading…
Blocuri de diferență
Tabel de diferențe octet cu octet
4. Vederea aliniată pe blocuri (detectează inserții și ștergeri)
O diferență octet cu octet aliniază decalajul N cu decalajul N. Dacă s-au inserat sau șters octeți la mijloc într-un fișier, tot ce urmează de la acel punct se deplasează, iar diferența simplă raportează întreaga coadă ca diferită. Acest mod calculează rezumatele blocurilor de 1 KB, le potrivește între fișiere și raportează rezultatul ca operații de copiere / inserare / ștergere — așa cum văd o modificare instrumentele delta precum xdelta. Este disponibil când ambele fișiere au 64 MB sau mai puțin.
5. Export
Confidențialitate: ambele fișiere sunt citite cu FileReader din browser și comparate în această filă — fără server, fără încărcare, fără stocare. Fișierele mari sunt comparate în felii de 1 MB, deci chiar și intrările de 200 MB nu stau niciodată complet în memorie deodată (cu excepția cazului în care se rulează vederea aliniată pe blocuri, care încarcă ambele fișiere cât timp lucrează).
Ce este comparația binară a fișierelor?
O comparație binară aliniază două fișiere la octetul 0 și merge înainte, raportând fiecare decalaj unde octeții diferă — echivalentul în browser al comenzii clasice cmp -l. Instrumentele de diff pentru text nu pot face asta: fie se blochează la octeții netipăribili, fie reinterpretează în liniște fișierul într-o codificare de caractere. O comparație binară tratează ambele fișiere exact ca ce sunt, adică vectori de octeți, ceea ce este necesar pentru imagini de firmware, dump-uri de disc, fișiere de bază de date, blocuri criptate sau orice fișier al cărui format nu este cunoscut.
Trei întrebări primesc răspuns la trei adâncimi diferite. „Sunt identice?” este o întrebare de sumă de control — instrumentul răspunde cel mai repede, dar doar da sau nu. „Unde diferă?” este diferența octet cu octet din această pagină: decalaje, valori și care biți s-au inversat. „Ce fel de schimbare este?” este ceea ce adaugă vederea aliniată pe blocuri — dacă diferența este o modificare pe loc, o porțiune inserată sau o porțiune ștearsă.
Diferență octet cu octet față de aliniere pe blocuri — de ce două vederi?
Situație
Diferența octet cu octet spune
Vederea aliniată pe blocuri spune
Un câmp a fost suprascris pe loc (aceeași dimensiune a fișierului)
câteva decalaje împrăștiate diferite
la fel, plus „restul se copiază identic”
1 KB a fost inserat la decalajul 2000 al fișierului B
tot ce este de la 2000 încolo „diferă”
copiere 0–2000, inserare 1 KB, copiere restul
Un bloc a fost șters din mijlocul fișierului B
tot ce este de la acel punct încolo „diferă”
copiere până la gol, ștergere a N octeți, copiere restul
Fișierul B este fișierul A cu un alt antet adăugat în față
fișierele întregi „diferă”
ștergere antet, apoi o copiere lungă — adică o deplasare constantă
Diferența octet cu octet este întotdeauna corectă — acei octeți chiar diferă la acele decalaje. Ce se schimbă este interpretarea după ce s-au inserat sau șters octeți, exact ca atunci când se adaugă o linie la începutul unui fișier text și fiecare număr de linie care urmează se schimbă.
Cum se citește analiza la nivel de bit
Pentru fiecare octet diferit, pagina calculează A XOR B și numără ce poziții de bit sunt setate. Histograma aceasta este surprinzător de expresivă: diferențele concentrate în bitul 0 (cel mai puțin semnificativ bit al fiecărui octet) sunt amprenta stenografiei LSB, unde un mesaj este ascuns ajustând bitul cel mai puțin semnificativ al eșantioanelor de pixeli sau audio. Diferențele răspândite uniform pe toate cele opt poziții înseamnă că au fost rescrise valori întregi. Diferențele care ating doar biții de sus înseamnă de obicei că un câmp a fost înlocuit cu o valoare de ordin de mărime foarte diferit. Distanța Hamming (numărul total de biți care diferă) cuantifică același lucru într-un singur număr.
O precizare onestă: datele aleatorii coincid pe un octet dat cu probabilitatea 1/256, deci două fișiere fără legătură, de aceeași dimensiune, tot se potrivesc pe aproximativ 0,4% din octeți. O similaritate de 99,98% cu câteva blocuri scurte de diferență este o modificare la nivel de patch; o similaritate de 0,4% înseamnă pur și simplu că fișierele nu au legătură.
Greșeli frecvente
„Tot fișierul este roșu după prima diferență.” — acesta este efectul de deplasare descris mai sus, nu o corupere reală. Se rulează vederea aliniată pe blocuri: dacă raportează o inserție și două operații lungi de copiere, fișierele diferă exact prin acea porțiune inserată. „Sumele de control se potrivesc, dar fișierele diferă aici.” — dacă rezumatele SHA-256 se potrivesc, fișierele nu diferă; se verifică din nou că s-au deschis aceleași fișiere în ambele instrumente. O potrivire CRC-32, pe de altă parte, nu demonstrează nimic împotriva unei coliziuni intenționate. „Similaritate 0,4%, dar am schimbat un singur lucru.” — dacă modificarea a fost în interiorul unui container comprimat sau criptat (ZIP, PNG zTXt, volum criptat), o singură schimbare logică rescrie întreg fluxul comprimat.
Întrebări frecvente
Care este limita de dimensiune? — 200 MB per fișier pentru diferența octet cu octet, comparate în felii de 1 MB. Vederea aliniată pe blocuri încarcă ambele fișiere, deci este limitată la 64 MB pe fiecare parte. Detectează porțiuni mutate? — aliniatorul potrivește blocurile în ordine; o porțiune mutată într-o altă poziție apare ca o ștergere plus o inserție a aceluiași conținut, ceea ce este o descriere corectă, deși cam directă. Poate produce un fișier de patch? — nu, este un instrument de analiză; rapoartele CSV și TXT sunt pentru documentare și revizuire, nu pentru aplicarea modificărilor. Ce se întâmplă cu fișierele? — nimic: fără server, fără stocare, fără analize; se închide fila și fiecare octet de intrare dispare.