10 votes

Est-ce que bcrypt.h de winapi prend effectivement en charge le hachage bcrypt?

Cela peut sembler être une question étrange, et il est un peu bizarre que je doive réellement poser cette question, mais après avoir passé quelques heures à examiner la documentation de MSDN pour les routines bcrypt qui ont été ajoutées dans Vista, j'en suis presque arrivé à la conclusion qu'il n'y a pas de support réel pour bcrypt!

Selon Wikipédia:

bcrypt est une fonction de hachage cryptographique adaptative pour les mots de passe ... basé sur le chiffrement Blowfish ... En plus d'incorporer un sel pour se protéger contre les attaques de tables arc-en-ciel, bcrypt est un hachage adaptatif : au fil du temps, il peut devenir de plus en plus lent afin de rester résistant aux attaques spécifiques de recherche de force brute contre le hachage et le sel.

Cependant, d'après la documentation sur MSDN, la bibliothèque "bcrypt" est apparemment en réalité une interface générique pour le chiffrement et le hachage. Vous devez obtenir une poignée vers un "fournisseur d'algorithme" via la fonction BCryptOpenAlgorithmProvider, qui propose plusieurs algorithmes intégrés à choisir. Mais le mot "blowfish" ne semble nulle part dans la liste.

Alors est-ce que j'ai raté quelque chose? Est-ce que je lis mal? Ou la bibliothèque "bcrypt" de Windows ne supporte-t-elle pas du tout bcrypt?

10voto

Ian Boyd Points 50743

Version courte

Non, bcrypt est l'abréviation de bestcrypt. Et non, il ne prend pas en charge le hachage de mot de passe bcrypt (blowfish crypt).

Version longue

Dans le contexte du MSDN, BCrypt est une abréviation de "BestCrypt", mais le nom PR est le suivant:

API de cryptographie : Génération suivante (Cng)

Il est implémenté dans bcrypt.dll.

BestCrypt/BCrypt/Cng est le successeur de l'ancien CryptoAPI.

Microsoft est lentement en train de supprimer les références à "BestCrypt" de leur site, mais vous pouvez toujours le voir dans certaines pages comme:

Classe SHA256Cng

Cet algorithme est destiné uniquement au hachage et ne fournit ni chiffrement ni déchiffrement. Il utilise la couche BCrypt (BestCrypt) CNG.

Je trouve intéressant (en tout cas pour moi) que le framework .NET peut généralement vous fournir trois implémentations pour chaque type d'algorithme de cryptographie. Par exemple, pour le hachage SHA2, il y a:

  • SHA256Managed : une implémentation écrite uniquement en code managé
  • SHA256CryptoServiceProvider : une enveloppe autour de l'implémentation native du fournisseur de services cryptographiques (CSP)
  • SHA256Cng : une enveloppe autour de l'implémentation de Cryptographie Next Gen (Cng)

5voto

John Points 3990

Les API BCrypt sont génériques et prennent en charge divers algorithmes de hachage cryptographique, mais bcrypt n'en fait pas partie. Le préfixe B semble simplement être un moyen de distinguer les anciennes API de la prochaine génération.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X