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é ?
Parce qu'il ne s'agit pas d'un cryptage à partir d'une clé mais uniquement d'un algorithme, comme les fonctions md5 ou sha1. Ces fonctions retournent toujours le même résultat pour une même valeur de départ.
crypt("pomme") te retournera toujours $1$xrQx6ZNj$0x/cT4kvcB3pegBAkYkyz.
moi perso j'ai à chaque fois deux codes différents ^^
En fait j'ai eu la réponse sur un autre forum, si ca t'intéresse :
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 gras le sel (avec $1$ désignant la méthode de hashage MD5)
Attention à crypt, qui n'est qu'un "provider" de méthode de cryptage. Il peut utiliser divers algo de cryptage en fonction de ce qui est installé sur ta machine.