Ar putea fi o problemă uriașă în cazul dvs., deoarece există o coliziune identică de prefix în MD5;
|prefix identic | parte liberă a fișierului A | sufix identic |
|prefix identic | parte liberă a fișierului B | sufix identic |
^
au coliziune aici| restul e la fel
Deși astăzi identificarea coliziunii pentru MD5 este foarte ușoară, în cazul în care atacatorul poate controla un bloc din mijloc al MD5, probabilitatea acestui lucru se poate reduce dacă fișierele nu sunt arbitrare, deoarece va oferi atacului mai puțini candidați posibili pentru coliziune.
În cazul tău, nu există atacator și cauți o coliziune necontrolată. În VCS, fișierele cu multe editări pot intra în grupul de posibile scenarii de coliziune, același prefix, unele părți modificate și sufix identic. Problema dvs. majoră va fi să determinați ce parte să testați; doar al doilea bloc (MD5 are blocuri de 512 biți) sau doar al treilea bloc sau al doilea și al treilea bloc...
De ce să ne deranjezi cu MD5 și să avem o verificare secundară în timp ce putem avea alternative mai bune și mai rapide.
- BLAKE2 a fost cel mai rapid de acum BLAKE3 care este chiar mai rapid. BLAKE2 de ~2 ori și BLAKE3 de ~9 ori mai rapid decât MD5. Utilizați BLAKE2/3 cu ieșire pe 512 biți și aveți un $2^{256}$-rezistenta la coliziune in timp; deci crearea unei coliziuni este imposibil din punct de vedere computațional.
- SHA-512 care are aproape aceeași viteză ca MD5 și poate garanta o rezistență mult mai bună la ciocnire pe care MD5 nu o poate egala în niciun fel.
The concluzia lui Corkami;
Omoară MD5!
Dacă nu verificați în mod activ dacă există malformații sau blocuri de coliziuni în fișiere, nu utilizați MD5!
Nu este un hash criptografic, este o funcție de jucărie!