Serveur Apache HTTP Version 2.4

Notes � propos des formats de chiffrement des mots de passe g�n�r�s et compris par Apache.
Voici les cinq formats de mots de passe qu'Apache reconna�t pour l'authentification de base. Notez que tous les formats ne sont pas support�s par toutes les plates-formes :
crypt(3) avec une source d'entropie sur 32 bits
       (seuls 12 bits sont utilis�s), et seulement les 8 premiers
       caract�res du mot de passe. Non s�r.
      $ htpasswd -nbB monNom monMot-de-passe
      monNom:$2y$05$c4WoMPo3SXsafkva.HHa6uXQZWr7oboPiC2bT/r7q1BB8I2s0BRqC
      
      $ htpasswd -nbm monNom monMot-de-passe
      monNom:$apr1$r31.....$HqJZimcKQFAMYayBlzkrA/
      
      $ htpasswd -nbs monNom monMot-de-passe
      monNom:{SHA}VBPuJHI7uixaa6LQGWx4s+5GKNE=
      
      $ htpasswd -nbd monNom monMot-de-passe
      monNom:rqXexS6ZhobKA
      
OpenSSL conna�t l'algorithme MD5 sp�cifique � Apache.
      $ openssl passwd -apr1 monMot-de-passe
      $apr1$qHDFfhPC$nITSVHgYbDAK1Y0acGRnY0
      
      openssl passwd -crypt monMot-de-passe
      qQ5vTYO3c8dsU
      
La source d'entropie pour un mot de passe CRYPT est constitu�e
      des deux premiers caract�res (convertis en valeur binaire). Pour
      valider monMot-de-passe par rapport �
      rqXexS6ZhobKA
      $ openssl passwd -crypt -salt rq monMot-de-passe
      Warning: truncating password to 8 characters
      rqXexS6ZhobKA
      
Notez que sp�cifier monMot-d au lieu de
      monMot-de-passe produira le m�me r�sultat car seuls
      les 8 premiers caract�res des mots de passe CRYPT sont pris en
      compte.
La source d'entropie pour un mot de passe MD5 se situe entre
      $apr1$ et le caract�re $ suivant (sous
      la forme d'une valeur binaire cod�e en Base64 - au maximum 8
      caract�res). Pour valider monMot-de-passe par rapport
      � $apr1$r31.....$HqJZimcKQFAMYayBlzkrA/
      $ openssl passwd -apr1 -salt r31..... monMot-de-passe
      $apr1$r31.....$HqJZimcKQFAMYayBlzkrA/
      
La variante SHA1 constitue probablement le format le mieux appropri� pour l'authentification DBD. Comme les fonctions SHA1 et Base64 sont en g�n�ral disponibles, d'autres logiciels peuvent renseigner une base de donn�es avec des mots de passe chiffr�s utilisables par l'authentification basique d'Apache.
Pour cr�er des mots de passe au format SHA1 pour l'authentification de base d'Apache dans divers langages :
      '{SHA}' . base64_encode(sha1($password, TRUE))
      
      "{SHA}" + new sun.misc.BASE64Encoder().encode(java.security.MessageDigest.getInstance("SHA1").digest(password.getBytes()))
      
      "{SHA}" & ToBase64(BinaryDecode(Hash(password, "SHA1"), "Hex"))
      
      require 'digest/sha1'
      require 'base64'
      '{SHA}' + Base64.encode64(Digest::SHA1.digest(password))
      
      Utilisez la fonction APR : apr_sha1_base64
      
        
        '{SHA}'||encode(digest(password,'sha1'),'base64')
      
Apache ne reconna�t qu'un format pour les mots de passe
    d'authentification � base de condens�s - le condens� MD5 de la
    cha�ne utilisateur:domaine-de-protection:mot-de-passe
    sous la forme d'une cha�ne de 32 caract�res au format hexad�cimal.
    domaine-de-protection est l'identifiant du domaine de
    protection de l'autorisation pass� en argument � la directive
    AuthName dans
    apache2.conf.
Comme la fonction MD5 est en g�n�ral disponible, d'autres logiciels peuvent renseigner une base de donn�es avec des mots de passe chiffr�s utilisables par l'authentification � base de condens�s d'Apache.
Pour cr�er des mots de passe pour l'authentification � base de condens�s d'Apache dans divers langages :
      md5($user . ':' . $realm . ':' .$password)
      
      byte b[] = java.security.MessageDigest.getInstance("MD5").digest( (user + ":" + realm + ":" + password ).getBytes());
      java.math.BigInteger bi = new java.math.BigInteger(1, b);
      String s = bi.toString(16);
      while (s.length() < 32)
      
        s = "0" + s;
      
      // La cha�ne s contient le mot de passe chiffr�
      
      LCase(Hash( (user & ":" & realm & ":" & password) , "MD5"))
      
      require 'digest/md5'
      Digest::MD5.hexdigest(user + ':' + realm + ':' + password)
      
        
        encode(digest( user || ':' || realm || ':' || password , 'md5'), 'hex')