Quanto sono unici i checksum?


11

Ho molti file che devo ordinare; e purtroppo ci sono molti file con lo stesso nome ma con contenuti diversi e ci sono gli stessi contenuti con nomi di file diversi.

Sto pensando di utilizzare md5sumper generare checksum per i file, ma devo sapere - è possibile che due file diversi (ad es. Contenuto diverso) generino lo stesso checksum?

Se lo è, quanto è probabile che accada?

Sarebbe possibile utilizzare due diversi programmi di checksum non correlati (ovvero non nella stessa "famiglia") per generare due checksum - partendo dal presupposto che mentre due file diversi possono generare lo stesso checksum per uno dei programmi di checksum, non succederebbe mai ad entrambi contemporaneamente?


2
Ricorda che md5 / sha2 / etc è un HASH di dati che associa quindi un sacco di informazioni a uno spazio di bit più piccolo, quindi è possibile che ci possano essere delle collisioni. Un HASH non è una chiave unica e se questo è il tuo obiettivo ... Consiglio vivamente di fare qualcos'altro.
mdpc,

Per l'ordinamento dei file, MD5 va bene. Da crypto.stackexchange.com/a/18337/49945 , la probabilità di collisione del checksum di due diversi contenuti è 1 su 2 ^ 128 che è circa 1 su 10 ^ 43. È davvero molto raro. Se si esegue un confronto per microsecondo, in media si otterrebbe una collisione una volta ogni 10 ^ 20 anni. Sono passati solo ~ 10 ^ 9 anni dal Big Bang, quindi le probabilità di una collisione che si verificano ANCHE UN SOLO TEMPO, ad un confronto per microsecondo dal Big Bang fino ad ora sono ancora solo 1 su 10 ^ 11. Dati cento miliardi di computer simultanei, solo ~ uno avrebbe visto ancora una collisione.
ToolmakerSteve

... anche se non è chiaro il motivo per cui dovresti usare qualsiasi algoritmo di hash durante l'ordinamento dei file. Se ci sono file con lo stesso nome, devono essere identificabili con altri criteri; ad esempio, ci deve essere un percorso univoco per il file o forse un offset di byte all'interno di un dispositivo di archiviazione? Uno di questi sarebbe un modo più utile per fare riferimento in modo univoco al file.
ToolmakerSteve

Risposte:


11

Due file con lo stesso contenuto ma nomi di file diversi: ( file1 e file2 ):

cat file1
this is a simple file

cat file2
this is a simple file

md5sum file1
7de45bf879db49de7e2eacea23e6c165  file1
md5sum file2
7de45bf879db49de7e2eacea23e6c165  file2

Due file con contenuti diversi ma stessi nomi di file: ( file1 e file1 )

cat file1
this is a simple file
cat file1
this is a simple file with extra contents
md5sum file1 #first file1
7de45bf879db49de7e2eacea23e6c165  file1
md5sum file1 #second file1
c7c8f3fd9ddd7a926c31416a69063e4e  file1

Dalla voce wiki ,

Tuttavia, è molto improbabile che due file non identici nel mondo reale abbiano lo stesso hash MD5, a meno che non siano stati creati appositamente per avere lo stesso hash.

Ma l' algoritmo MD5 ha i suoi difetti.

Tuttavia, ora che è facile generare collisioni MD5, è possibile per la persona che ha creato il file creare un secondo file con lo stesso checksum, quindi questa tecnica non può proteggere da alcune forme di manomissione dannosa. Inoltre, in alcuni casi, il checksum non può essere considerato attendibile (ad esempio, se è stato ottenuto sullo stesso canale del file scaricato), nel qual caso MD5 può fornire solo funzionalità di controllo degli errori: riconoscerà un download danneggiato o incompleto, che diventa più probabile quando si scaricano file di dimensioni maggiori.

Consiglierei di usare sha1 per calcolare il checksum poiché produrre collisioni non è così semplice quando si usano algoritmi sha1 . La produzione di checksum sha1 è piuttosto semplice, come puoi vedere qui .


NOTA: la domanda riguarda l' ordinamento dei file; la raccomandazione di utilizzare sha1non è rilevante per tale compito; è importante solo se preoccupato per la sicurezza .
ToolmakerSteve
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.