[RESOLU] Comment fonctionne crypt()

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] Comment fonctionne crypt()

Re: [RESOLU] Comment fonctionne crypt()

par @rthur » 03 nov. 2015, 17:42

;-)

Re: Comment fonctionne crypt()

par bjink » 03 nov. 2015, 17:33

Merci @rthur, t'es un king ;)

Re: Comment fonctionne crypt()

par @rthur » 02 nov. 2015, 15:14

Bonjour,
Mais utilisé sans sel, crypt() donne un résultat différent chaque fois qu'on l'applique sur un même mot de passe. Et pourtant dans ce cas, je constate que le serveur arrive pourtant à vérifier si le mot de passe entré par l'utilisateur est bien celui encrypté dans htpasswd !

Comment cela est-il possible ?
Image

:D



Plus sérieusement, en fait quand on utilise crypt sans salt, il va générer le salt lui même et le concaténer au début du mdp généré.

Exemple :
<?php
echo crypt('toto');
// va donner par exemple : $1$l8lY733i$SOydDPHlIrK8SZnNKOhC50
Et le salt est là :
$1$l8lY733i$SOydDPHlIrK8SZnNKOhC50

Vérification :
<?php
echo crypt('toto', '$1$l8lY733i$');
// on obtient bien : $1$l8lY733i$SOydDPHlIrK8SZnNKOhC50

Comment fonctionne crypt()

par bjink » 02 nov. 2015, 14:13

Bonjour,

Je voudrais comprendre comment fonctionne la fonction crypt(), que j'utilise (sans problème) pour protéger les mots de passe stockés dans .htpasswd :
utilisateur:motdepasse_crypté

L'accès au site est contrôlé via .htaccess par instructions de type :
AuthName "Message"
AuthType Basic
AuthUserFile "/repertoire/.htpasswd"
Require valid-user

Si - pour obtenit le motdepasse_crypté que je vais stocker dans htpasswd - j'utilise crypt() avec un sel, j'obtiens un chiffrement qui commencent par le sel. Dès lors je comprends comment le système peut fonctionner : le serveur lit le mot de passe entré par utilisateur, calcule motdepasse_crypté puis le compare à celui-ci stocké dans htpasswd. En effet, utilisé avec un sel, crypt() donne toujours le même résultat.

Mais utilisé sans sel, crypt() donne un résultat différent chaque fois qu'on l'applique sur un même mot de passe. Et pourtant dans ce cas, je constate que le serveur arrive pourtant à vérifier si le mot de passe entré par l'utilisateur est bien celui encrypté dans htpasswd !

Comment cela est-il possible ?