Forum Programmation.shell sha1sum différent entre php et bash

Posté par  (site web personnel) . Licence CC By‑SA.
Étiquettes : aucune
-1
2
avr.
2013

Bonjour,

Pour automatiser l'installation d'un programme php je script un bash mais je bloque sur la création du mot de passe crypté de l'utilisateur. Le programme utilise sha1 avec un salt ce qui donne :

return sha1($salt.sha1($password));

En bash je passe par plusieurs étapes mais il me semble que c'est la même finalité… bah non. Ci-dessous mes scripts de test :

pass.sh

#!/bin/sh

SALT_DEV="46005"
PASS_DEV="123456"
echo "pass dev $PASS_DEV"
USERPASSE=`echo $PASS_DEV | sha1sum | cut -d" " -f1`
USERPASSE=`echo $SALT_DEV$USERPASSE | sha1sum | cut -d" " -f1`
echo "userpasse $USERPASSE"

pass.php

<?php

$salt="46005";
$password = "123456"."\n";
echo "pass dev ".$password;
echo "userpasse ".sha1($salt.sha1($password));

echo "\n";
?>

Résultat :

pass.sh

pass dev 123456
userpasse d1f4195d74d18bc99c842b6a3d4f724aff0c955a

pass.php

pass dev 123456
userpasse 8686046d9e40f96f7aa90165f3bf40351dbc3b98

  • # echo -n

    Posté par  . Évalué à 6. Dernière modification le 02 avril 2013 à 09:52.

    non vérifié: en bash ton deuxième sha1sum prend en entrée $SALT_DEV$USERPASSE et un retour chariot, alors que ton sha1 en php ne rajoute pas ce retour chariot je pense

    plutot que de rajouter un retour chariot au password dans ton code php, utilise echo -n dans ton code shell

    • [^] # Re: echo -n

      Posté par  (site web personnel) . Évalué à 1.

      Une erreur de copier/coller c'est glissé dans le pass.php

      $salt="46005";
      $password = "123456";
      echo "pass dev ".$password."\n";
      echo "userpasse ".sha1($salt.sha1($password))."\n";
      
      

      Avec echo -n dans le bash marche nikel

      echo "pass dev $PASS_DEV"
      USERPASSE=`echo -n $PASS_DEV | sha1sum | cut -d" " -f1`
      echo "userpasse $USERPASSE"
      USERPASSE=`echo -n $SALT_DEV$USERPASSE | sha1sum | cut -d" " -f1`
      echo "userpasse $USERPASSE"
      
      

      Maintenant c'est le même hash, merci.

      Born to Kill EndUser !

      • [^] # Re: echo -n

        Posté par  . Évalué à 0.

        Pour avoir l'équivalent du code shell de ton post en php, il aurait fallu écrire:
        echo "userpasse ".sha1($salt.sha1($password)."\n");
        et non
        echo "userpasse ".sha1($salt.sha1($password))."\n";

  • # ou sinon

    Posté par  . Évalué à 1.

    Tu aurais pu lancer un process php avec le script en paramètre, je crois que c'est l'option -r, le seul but du script étant de faire le calcul via php et non bash itself.

    C'est grosso modo ce que j'ai fais la dernière fois que j'ai rencontré ce problème, en l’occurrence c'était une somme java qui ne donnait pas les bon résultats,
    alors depuis php on instancié java uniquement pour calculer la somme.
    Pas terrible,
    mais quand tu n'as pas le choix, ça marche !

    • [^] # Re: ou sinon

      Posté par  (site web personnel) . Évalué à 0.

      J'y ai bien pensé sauf que je voulais pas empiler les programmes et puis je préssentais une bataille pour passer certaine infos en paramètres.

      Born to Kill EndUser !

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.