Question

Je travaille avec Subversion basé sur Windows et j'aimerais écrire un utilitaire simple en .NET pour travailler avec le fichier de mot de passe Apache.Je comprends qu'il utilise une fonction appelée MD5Crypt, mais je n'arrive pas à trouver une description de l'algorithme au-delà du fait qu'à un moment donné, il utilise MD5 pour créer un hachage.

Quelqu'un peut-il décrire l'algorithme MD5Crypt et le format de la ligne de mot de passe ?

Était-ce utile?

La solution

Une description textuelle précise de l'algorithme de cryptage mis à jour pour être utilisé avec sha256 et sha512 se trouve sur http://www.akkadia.org/drepper/SHA-crypt.txt

Il inclut des contrastes avec l'algorithme MD5, il devrait donc vous donner ce que vous recherchez.

Autres conseils

Vous pouvez trouver une implémentation de md5crypt dans le paquet tcllib. Le téléchargement est disponible à partir de sourceforge.

Vous pouvez également trouver un exemple de md5crypt compatible Apache dans le code source du gestionnaire générique CAS

MD5Crypt est essentiellement un remplacement de l'ancienne fonction de cryptage Unix.Il a été introduit dans Freebsd et a également été adopté par d'autres groupes.

L'idée de base est la suivante :

  • un hachage est un bon moyen de stocker un mot de passe
    • vous prenez le mot de passe saisi par l'utilisateur et le hachez
    • comparez-le au hachage stocké
    • si le hachage est le même, les mots de passe correspondent

Mais il y a un problème :

  • Supposons que vous choisissiez le mot de passe « jeff » et que je choisisse également le mot de passe « jeff ».
  • Désormais, nos deux hachages de mots de passe sont identiques.
  • Donc, si je vois les codes de hachage stockés, je saurai que votre mot de passe est le même que le mien, "jeff".

Ainsi, nous pouvons ajouter une chaîne "salt" au mot de passe.

  • Cela peut être n'importe quoi, aléatoire.
  • Supposons que pour votre compte c'est "zuzu" et pour mon compte c'est "rjrj".
  • Maintenant, nous hachons la chaîne "jeffzuzu" pour votre mot de passe et "jeffrjrj" pour mon mot de passe.
  • Nous avons maintenant différentes valeurs de hachage pour notre mot de passe.
  • Nous pouvons stocker en toute sécurité la valeur salt avec le mot de passe haché, car même connaître la valeur salt n'aidera pas à décoder le hachage.

Vous mentionnez .net, il y a un pointeur sur un autre forum vers ceci :

System.Security.Cryptography.MD5CryptoServiceProvider md5 = new
System.Security.Cryptography.MD5CryptoServiceProvider();

string hash =BitConverter.ToString((md5.ComputeHash(
System.Text.ASCIIEncoding.Default.GetBytes(stringtohash) ) ));

HTH!

Le processus est plutôt complexe...le sel et le mot de passe sont hachés ensemble non pas une, mais 1 000 fois.De plus, le codage base64 utilise un alphabet différent et le remplissage est supprimé à la fin.

La meilleure chose serait probablement de trouver une bibliothèque à utiliser, comme la glibc sous cygwin.

Puisque vous codez avec Apache de toute façon, jetez un œil à Implémentation d'Apache de crypt-md5.

L'algorithme original (je pense) en C peut être trouvé ici.Elle ne diffère de l’implémentation ci-dessus que par le nombre magique différent.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top