MD5 Hashes in C# erzeugen – Benchmark und Geschwindigkeitsoptimierung

Für ein aktuelles Projekt im privaten Umfeld muss ich eine große Anzahl an MD5-Hashes erzeugen. Platz für Diskussion über Sinnhaftigkeit und Sicherheit von MD5-Hashes möchte in diesem Artikel ausdrücklich nicht geben, sondern mich viel mehr damit beschäftigen, wie sich mittels C# möglichst schnell MD5-Hashes generieren lassen.
Das .NET-Framework selbst bringt eine Klasse zum Erstellen von MD5-Hashes mit sich, welche mir nach ersten Versuchen jedoch etwas langsam vorkam. Somit habe ich mich auf die Sache nach alternativen Klassen und/oder Funktionen gemacht und bin auf eine Klasse von Syed Faraz Mahmood gestoßen. Hierbei handelt es sich um eine manuelle Implementierung seinerseits der RFC 1321 („The MD5 Message-Digest Algorithm“). Die Klasse kann kostenlos auf seinem Blog heruntergeladen werden.
Die Testumgebung
Für den Test habe ich 6 Listen (List<int>) mit verschieden vielen Zahlen erstellen. Je eine mit 1.000, 10.000, 50.000, 100.000, 1.000.000 und 10.000.000 Elementen.
Alle Listen wurden für beide Methoden (.NET-Framework MD5 Implementierung & manuelle MD5 Implementierung) […]