Innanzitutto, utilizzare un semplice hash MD5 per proteggere una password è una cattiva idea fin dall'inizio. Vedi Come fare in modo sicuro le password di hash? per i dettagli.
A parte ciò, si presuppone che una password a 128 bit abbia la stessa potenza dell'MD5 a 128 bit. Ciò presuppone implicitamente che i 128 bit della password siano scelti casualmente. Questo di solito non è il caso, cioè le password sono comunemente scelte per essere memorizzate e la memorizzazione di dati casuali a 32 byte (o circa 42 caratteri ASCII quando codificati con base64) non è facile.
Chiedendo se le password più lunghe di 128 bit sono inutili poiché MD5 è solo a 128 bit, si assume anche che vi sia un mapping 1: 1 tra un input a 128 bit e il suo hash MD5 a 128 bit. Non penso che questa sia una proprietà di MD5, cioè avresti bisogno in alcuni casi (leggermente) di più di 128 bit di input per generare uno specifico valore MD5.
Ma supponendo che la password fosse in realtà a 128 bit scelti a caso, che l'hacker non ha accesso alla password ma all'hash MD5 di esso e che questo hash MD5 viene quindi usato per convalidare la password - in questo caso l'attaccante avrebbe bisogno di fare un attacco pre-immagine, cioè trovare un input che corrisponde al valore hash esistente. Si scopre che questo è in realtà un po 'meno complesso di forzare brute tutte le password possibili. Secondo attacco pre-immagine su hash MD5 da crypto. se la complessità per trovare una preimage è circa 2 123 che è leggermente meno complessa di quella bruta che costringe tutto (2 128 per una ricerca completa, cioè 2 127 in media) ma ancora non facilmente fattibile.