La fonction crypt() utilisée pour un .htpasswd

Eléphant du PHP | 57 Messages

25 mars 2010, 01:22

Salut,

Je suis en train d'essayer de comprendre la fonction crypt()...
A ce que j'ai compris son cryptage dépend d'une clé.
Dans un tuto extérieur, un programmeur propose un générateur de mot de passe crypté utilisé pour les .htaccess ainsi que son code source. Il n'y crypte pas le mot de passe en fonction de notre pseudo (ce qui m'aurait semblé logique), donc ca veut dire que la clé est aléatoire et que même si on renseigne à chaque fois un pseudo identique et un mot de passe identique, on aura un mot de passe crypté différent. Ce mot de passe crypté sans prendre en compte le pseudo est stocké dans le fichier .htpasswd.

Ma question : Comment se fait-il que lorsque l'on veut accéder à une page du dossier protégé par cette méthode, le mot de passe que l'on indique colle toujours avec le mot de passe crypté dans le .htpasswd alors qu'il a été crypté sans utiliser le pseudo associé ?

ViPHP
ViPHP | 5462 Messages

25 mars 2010, 04:39

pour le htaccess c'est du CRYPT_EXT_DES non ?

Eléphant du PHP | 57 Messages

25 mars 2010, 11:03

En fait j'ai eu la réponse sur un autre forum, pour ceux que ca intéresserait :
Le sel aléatoire (impliquant un mot de passe toujours différent) ainsi que la méthode de hashage sont inclus dans le hash généré, c'est comme ça que le programme peut comparer avec le mot de passe fourni en clair (en le hashant avec la même méthode et le même sel)

$1$AfXtV3DR$FMnRUa/IARCwP9050VcgJ/

en rouge le sel (avec $1$ désignant la méthode de hashage MD5) et en bleu... bin le reste