Prima di tutto, sì sia MD5 che SHA1 sono stati ritirati dall'uso crittografico perché perché è possibile costruire coppie di messaggi che producono lo stesso valore di hash (ovvero "collisioni"). Detto questo, la possibilità di colpire una collisione a caso è assurdamente bassa.
MD5 ha un output a 128 bit, SHA1 è 160 bit. Supponiamo che un file sottoposto a hashing esegua l'hash su uno dei 2 output 128 / 2 160 con uguale probabilità, quindi, in media, ti aspetti di trovare una collisione dopo l'hashing 2 127 / 2 159 file diversi.
Supponiamo di aver riempito un disco rigido con file a 512 bit (64 byte). Avresti bisogno di 2 133 bit = 1.3 x 10 27 TB per MD5 o 2 165 bit = 5,8 x 10 36 TB per memorizzare questi file. Per confronto, si stima che entro il 2020 la specie umana produrrà 44 zetabyte (4.4 × 10 10 TB) di dati all'anno.
Quindi, anche se hai cancellato tutti i file sul pianeta con MD5, hai solo una possibilità su 1 su 10 26 di ottenere una collisione per caso.
Per rispondere alla tua domanda originale:
To remedy this I thought I would switch to SHA1, but then had the thought that if I compared both, there would be even less chance of collision.
Does anyone here know both algorithms well enough to confirm or deny this?
Sì, è vero che dal momento che sono diverse funzioni hash, le possibilità che esistano due messaggi che sono collisioni per entrambi sono minuscole. Non so se sia meno minuscolo della possibilità di collisione in SHA-2/256 o SHA-2/512. A questo punto stiamo discutendo le probabilità astronomiche (cioè la possibilità di ottenere una collisione è inferiore al numero di atomi nella cosa di tipo universo) quindi / scrollare le spalle?
Ora, se stai parlando di attacchi malevoli (ad esempio file creati appositamente per ingannare MD5 o SHA1), allora forse hai un punto. ... In tal caso usa SHA2 (che è 256 bit) e stai bene:)