2008-10-22 9 views
7

Según lo documentado por MSDN, existen varios proveedores para muchos de los diferentes algoritmos de hash (por ejemplo, MD5, SHA, RIPE). Para cada uno de los algoritmos, cualquier aplicación disponible parece caer en 1 de 3 categorías:¿Por qué hay múltiples proveedores de algoritmos de hash diferentes en System.Security.Cryptography?

  • [algo] Cng
  • [algo] CryptoServiceProvider
  • [algo] Gestionado

¿Por qué hay múltiples implementaciones de cualquiera de estos algoritmos hash?

¿Cuáles son las diferencias entre las implementaciones?

¿Cuáles son las diferencias prácticas al elegir qué implementación utilizar en una aplicación?

Referencias:

http://msdn.microsoft.com/en-us/library/system.security.cryptography.aspx

+0

posible duplicado de [CNG, CryptoServiceProvider y Managed implementaciones de HashAlgorithm] (http://stackoverflow.com/questions/211169/cng-cryptoserviceprovider-and-managed-implementations-of-hashalgorithm) – CodesInChaos

Respuesta

11
  • [Algo]Managed es una implementación pura-IL del algoritmo.
  • [Algo]CryptoServiceProvider delega a CAPI, lo que le permite usar cosas tales como dispositivos criptográficos de hardware.
  • [Algo]Cng utiliza API Cryptography: Next Generation (CNG) que está diseñado para ser un reemplazo para CAPI pero sólo se admite en Vista y Server 2008. Los
+0

Ahh, estamos tan cerca. Gracias por la respuesta a las preguntas 1 y 2. ¿Alguna posibilidad de que usted o alguien más sepa la respuesta a la tercera pregunta (mi mayor preocupación) especialmente cuando CryptoServiceProvider y Managed están disponibles? –

+0

¡Eso es fascinante! Gran respuesta. – ine

+0

Uno tiende a pensar que el código administrado va a ser más lento que el código nativo, especialmente en el código criptográfico, y más aún si tiene un dispositivo de hardware. –

Cuestiones relacionadas