CNG, CryptoServiceProvider und verwaltete Implementierungen von HashAlgorithm

Ich habe mich also gefragt, ob es wesentliche Unterschiede zwischen den verschiedenen Implementierungen der Hash-Algorithmen gibt. Nehmen wir zum Beispiel die SHA-Reihe von Algorithmen. Alle haben drei Implementierungen, eine in verwaltetem Code und zwei Wrapper für verschiedene native Krypto-APIs. Gibt es jedoch wesentliche Unterschiede bei der Verwendung einer dieser APIs? Ich kann mir vorstellen, dass die Wrapper-Versionen eine höhere Leistung haben könnten, da sie im nativen Code ausgeführt werden, aber sie müssen alle exakt die gleichen Berechnungen durchführen und damit die gleiche Ausgabe liefern, dh sie sind austauschbar. Ist das richtig?

Zum Beispiel kann SHA512CNG nicht auf XP SP2 verwendet werden (Dokumente sind falsch), SHA512MANAGED jedoch.

@Maxim - Danke, aber nicht ganz das, wonach ich gefragt habe. Ich habe gefragt, ob es einen anderen Unterschied als möglicherweise die Leistung gibt, wenn die Managed / CryptoServiceProvider / CNG-Implementierungen eines bestimmten Hash-Algorithmus verwendet werden. Mit .NET 3.5 erhalten Sie alle Hash-Algorithmen mit drei Implementierungen

SHA512Managed SHA512CryptoServiceProvider SHA512Cng

Die beiden letzteren sind Wrapper für native APIs. Dies gilt zum Beispiel für alle SHAxxx-Implementierungen.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage