MD5 è una funzione di hash , non una funzione di crittografia. Produce un output di dimensioni fisse (128 bit) indipendentemente dalla dimensione di input. Non è pensato per essere reversibile. Pertanto, non può essere confrontato con AES: cosa fa MD5, AES non può fare, e cosa fa AES, MD5 non può fare.
Una situazione in cui è possibile confrontare in modo significativo le velocità di elaborazione di MD5 e AES è in protocolli in cui gli stessi dati sono entrambi crittografati (ad es. con AES) e coperti da un Message Authentication Code come HMAC, che si basa su una funzione di hash (possibilmente MD5). Uno di questi protocolli è SSL / TLS . In tal caso, possiamo provare a vedere quale tra la crittografia e il MAC utilizza la maggior parte del budget della CPU. Di solito, la crittografia è più costosa dell'hashing, che i numeri che si mostrano. Si noti, tuttavia, che MD5 è noto per avere un certo numero di punti deboli. La funzione di hash standard che si ritiene essere "così strong" come AES è SHA-256 e la velocità di elaborazione SHA-256 non è molto migliore di quella di AES, sulla CPU comunemente utilizzata.
Un'altra situazione è un PRNG . È possibile creare un PRNG da un codice a blocchi (come AES) crittografando i valori successivi di un contatore (questa è chiamata modalità CTR). Puoi anche costruire un PRNG con una funzione di hash di HMAC-i valori successivi di un contatore. In questo caso, questo funziona, per la funzione hash, sulla sua larghezza di banda output , non sulla sua larghezza di banda input e richiede hashing molti messaggi molto piccoli invece di un messaggio grande. Solitamente le funzioni di hash, incluso MD5, risultano essere piuttosto lente quando vengono utilizzate in questo modo.
Questo spiega perché definiamo cifrari a blocchi come AES, invece di usare ovunque una funzione di hash adatta a tutte le dimensioni.