En utilisant PBKDF2 avec la bibliothèque OpenSSL

Je veux utiliser l'algorithme PBKDF2 avec HMAC SHA1 (basé sur cette réponse).

Comment puis-je utiliser ce par le biais de la bibliothèque crypto?

J'ai commencé par regarder man openssl, mais le openssl passwd de commande (page de man) ne prend en charge qu'une petite poignée d'algorithmes. En regardant les crypto de la documentation, de la dg module dispose d'un EVP_BytesToKey méthode.

Sélection rigoureuse des paramètres de fournir un fichier PKCS#5 PBKDF1 compatible mise en œuvre. Cependant, de nouvelles applications devraient généralement pas l'utiliser (en préférant, par exemple, PBKDF2 de PCKS#5).

Qui me ramène à ma question initiale, comment puis-je utiliser PBKDF2 via crypto? Ai-je besoin de creuser dans le code et d'appeler un non-API-exposé de la méthode (comme PKCS5_PBKDF2_HMAC)? (et si oui, quel est le maintien d'être exposés?)

  • La langue de votre choix presque certainement dispose d'une bibliothèque qui implémente déjà PBKDF2. C'est (à mon humble avis) extrêmement préférable de les bombardements de la openssl ligne de commande ou à essayer de parler directement à l' (horriblement mauvais) libssl directement l'API.
  • Double Possible de Comment utiliser PKCS5_PBKDF2_HMAC_SHA1(). Voir aussi Est-il de l'API C dans openssl pour dériver une clé de chaîne de caractères et Ce n'PKCS5_PBKDF2_HMAC_SHA1 valeur de retour signifie?
  • "Ai-je besoin de creuser dans le code et d'appeler un non-API-exposé de la méthode (comme PKCS5_PBKDF2_HMAC)" - en Fait, c'est une API publique de la fonction. Les docs ont récemment ajouté. PKCS5_* est du capitole, une partie de l'API publique et peut être utilisé. pkcs5_* est plus faible, une partie de l'API interne, et ne doit pas être utilisé (ou en risque de l'être modifiées ou supprimées).
  • La page de man pour EVP_BytesToKey est un peu ambigu, car il n'est pas explicitement appel PKCS5_PBKDF2_HMAC. Il ne le mentionner dans la section "VOIR AUSSI", mais il y a un évident déconnecter (sinon, vous ne poseriez pas la question). Un patch a été soumis à l'aborder. Plus Un pour la lecture de la documentation et de poser la question. Merci de le signaler.
InformationsquelleAutor jtpereyda | 2014-03-31