windows winapi windows-7 windows-vista bcrypt

windows - ¿Bcrypt.h de winapi en realidad admite el hash de brypt?



windows-7 windows-vista (2)

Esto puede sonar como una pregunta extraña, y se siente un poco extraño que tenga que preguntar esto, pero después de pasar un par de horas mirando la documentación de MSDN para las rutinas de bcrypt que se agregaron en Vista, casi llegué a la conclusión ¡que no hay soporte de bcrypt real!

De acuerdo con Wikipedia:

bcrypt es una función de hash criptográfica adaptable para contraseñas ... basada en el cifrado Blowfish ... Además de incorporar una sal para proteger contra ataques de tablas arcoiris, bcrypt es un hash adaptativo: con el tiempo puede hacerse más lento y más lento para que siga siendo resistente a ataques específicos de búsqueda de fuerza bruta contra el hash y la sal.

Sin embargo, a partir de la documentación en MSDN, la biblioteca "bcrypt" aparentemente es en realidad una interfaz genérica para cifrado y hash. Debe obtener un identificador para un "proveedor de algoritmo" a través de la función BCryptOpenAlgorithmProvider , que tiene varios algoritmos incorporados para elegir. Pero la palabra "pez globo" no aparece en ninguna parte de la lista.

Entonces, ¿me estoy perdiendo algo? ¿Estoy leyendo esto mal? ¿O la biblioteca "bcrypt" de Windows no es realmente compatible con bcrypt ?


las API de BCrypt son genéricas y admiten varios algoritmos hash criptográficos, pero bcrypt no es una de ellas. El Prefijo B parece ser solo una forma de distinguir entre las API antiguas y la Próxima Generación.


En el contexto de MSDN, BCrypt es una forma abreviada de "BestCrypt" , pero el nombre PR para él es:

API de criptografía: próxima generación (Cng)

Está implementado en bcrypt.dll .

BestCrypt / BCrypt / Cng es el sucesor del CryptoAPI anterior.

Microsoft está eliminando lentamente las referencias a "BestCrypt" de su sitio, pero aún puede verlo en algunas páginas como:

Clase SHA256Cng

Este algoritmo es solo para hash y no proporciona ningún cifrado o descifrado. Utiliza el nivel CNG de BCrypt (BestCrypt).

Es interesante (para mí de todos modos) que el .NET Framework generalmente pueda proporcionarle tres implementaciones para cada clase de algoritmo de cifrado. Por ejemplo, para el hash SHA2, hay:

  • SHA256Administración : una implementación escrita puramente en código administrado
  • SHA256CryptoServiceProvider : una envoltura alrededor de la implementación del proveedor de servicios criptográficos (CSP) nativo
  • SHA256Cng : una envoltura alrededor de la implementación de Cryptography Next Gen (Cng)

Version corta

No, bcrypt es la abreviatura de bestcrypt . Y, no, no es compatible con hash de contraseñas de bcrypt (blowfish crypt).