md5 vs sha1

Cristian
Invité n'ayant pas de compte PHPfrance

15 janv. 2011, 08:43

Moi j'utilise cette methode...
	function hashPassword($password)
{
  $salt = "0sqddf2sds5f65efsd2ds35f16gdf6";
  //encrypt the password, rotate characters by length of original password
  $len = strlen($password);
  $password = md5($password);
  $password = rotateHEX($password,$len);
  return md5($salt.$password);
}

function rotateHEX($string, $n)
{
  //for more security, randomize this string
  $chars="abcdef1234567890";
  $str="";
  for ($i=0;$i<strlen($string);$i++)
  {
    $pos = strpos($chars,$string[$i]);
    $pos += $n;
    if ($pos>=strlen($chars))
      $pos = $pos % strlen($chars);
    $str.=$chars[$pos];
  }
  return $str;
}

$login = hashPassword($_POST['login']);
$password = hashPassword($_POST['password']);

Petit nouveau ! | 3 Messages

15 janv. 2011, 10:57

Question bête, mais faire un :

Code : Tout sélectionner

sha1(md5($pass));
C'est pertinent ?

ViPHP
ViPHP | 4674 Messages

15 janv. 2011, 12:40

C'est plus long à décoder, c'est tout :-).
« Un handicap est le résultat d'une rencontre entre une déficience ou différence et une incapacité de la société à répondre à celle-ci. »

Hoa : http://hoa-project.net (sur @hoaproject).

ViPHP
AB
ViPHP | 5818 Messages

15 janv. 2011, 17:15

Si tu veux augmenter les performances du sha1 tu peux utiliser la fonction hash disponible depuis php >= 5.1.2

$hash_valeur = hash("sha256",$valeur);

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

15 janv. 2011, 17:44

hum question à 3 francs 6 sous ;)

Est il vraiment utile de hasher / crypter des mots de passes dans le contexte web en dehors du fait que la récupération d'un dump sera inutilisable.
L'accès a l'administration d'un site web se fait en général par les formulaire de connexion et donc un brute force sur le formulaire est à mon avis plus a craindre qu'une tentative d'accès direct sur la base ?

enfin voila j'ai rien contre une explication de l'utilité extrême de la chose :d

@+
Il en faut peu pour être heureux ......

ViPHP
AB
ViPHP | 5818 Messages

15 janv. 2011, 18:09

Oui mais ce n'est pas parce qu'une méthode de piratage est plus à craindre qu'une autre, qu'il faut négliger l'autre.

Déjà, déontologiquement, un administrateur n'a pas à connaître le mot de passe d'un visiteur. Et en complément si la base se fait pirater, le mal sera moindre.

D'autre part concernant le formulaire, rien ne t'empêche de hasher, en javascript, les mots de passe saisis (concaténé à un sel pour un maximum de sécurité) avant de les transmettre dans le post du formulaire.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

15 janv. 2011, 18:38

hum wé ça évite le snif des paquets sur le réseau, pour le coté déontologie oui pourquoi pas je n'y avais pas penser sur ce point la ;)

le code JS je suis "contre" du fait des différences navigateur et que si un gus arrive sans SJ ça ne fonctionne plus (vieux souvenir de recherche de drivers en console sur le site de nvidia ;) ).

Je suis très dubitatif sur la chose, mais bon sha1 / md5 étant simple d'utilisation avec php y a pas de raison de s'en passer (utilisable avec mysql aussi remarque).

je vais continuer à utiliser sha1 + sel quand même :)


@+
Il en faut peu pour être heureux ......

ViPHP
AB
ViPHP | 5818 Messages

15 janv. 2011, 23:31

le code JS je suis "contre" du fait des différences navigateur et que si un gus arrive sans SJ ça ne fonctionne plus (vieux souvenir de recherche de drivers en console sur le site de nvidia ;) ).
Ce sont des lib javascript externes qui permettent de hasher en sha1 donc à priori le résultat sera compatible avec les différents navigateurs.

Sinon il doit être rare maintenant que les utilisateurs n'activent pas javascript car avec la mode du ajax, ça doit les vacciner...
Cela dit, j'utilise cette méthode principalement pour les connexions administrateurs, donc pour un public réservé, et puis comme leur interface d'administration utilise assez souvent javascript, ça ne me pose pas de problème (et eux non plus) d'avoir nécessairement javascript activé.