Annonce

Réduire
Aucune annonce.

Algorithme de hashage en PHP

Réduire
X
 
  • Filtre
  • Heure
  • Afficher
Tout nettoyer
nouveaux messages

  • Algorithme de hashage en PHP

    Bonjour, je suis en train de développer un framework php et je suis sur le module de connexion actuellement. Et là il font stocker les mdp ^^" Je fait un petit script que je trouve pas mal Mais j'ai peur pour les collisions/erreurs , si quelqu'un s'y connait en dehashage , qu'il s'exprime

    Code:
    $SEL        ="%:#[?µ";
    $pseudo    ="sonn";
    $id        ="1125";
    $password="aazertyd";
    $time        =1331042958;
    
    $shift=($id+(strlen($password)*strlen($password)))%128;
    
    $rand1=1;//rand(1,6);
    
    if($rand1==1)
    { $hash=$password.$SEL.$time; }
    elseif($rand1==2)
    { $hash=$password.$time.$SEL; }
    elseif($rand1==3)
    { $hash=$time.$password.$SEL; }
    elseif($rand1==4)
    { $hash=$time.$SEL.$password; }
    elseif($rand1==5)
    { $hash=$SEL.$time.$password; }
    elseif($rand1==6)
    { $hash=$SEL.$password.$time; }
    
    $hash=hash('whirlpool',$hash);
    $part1_hash=substr($hash,0,$shift);
    $part2_hash=substr($hash,$shift,128);
    
    $hash=$part1_hash. dechex(2*$rand1).$part2_hash;
    
    echo $hash;
    Ca fait pas mal de calcul, autant à l'inscription, qu'a la connexion, mais bon... :/
    "Tout le monde savait que c'était impossible. Est arrivé un qui ne le savait pas et qui l'a fait !" Marcel Pagnol ////// "Certains voient les choses telles qu’elles sont et se disent pourquoi donc ? D’autres rêvent de choses qui n’ont jamais existé et se disent pourquoi pas !" George Bernard Shaw

  • #2
    C'est pour crée un hash du mot de passe ? et que veut tu savoir, si c'est cassable ?
    Les collisions se font sur des suites du style fin/début donc normalement il ne devrais pas y avoir de problème ... pourquoi tu voulait faire des test ?

    Commentaire


    • #3
      Merci de ta réponse, toi qui t'y connait en plus
      oui c'est pour créer un hash du mdp, et j'aimerais savoir si c'est cassable à première vue.
      "Les collisions se font sur des suites du style fin/début" tu peux dévellopper s'il te plait, ou donner un lien ?

      pour le moment, j'ai pas fait l'algo pour faire la comparaison (qui est plus difficile d'une simple md5 :troll: ) mais demain, je l'aurais fait et je générerais des données aléatoire, mais je sait pas vraiment comment faire des tests... ^^"

      Vu que c'est ton rayon, tu pourrais me filer quelques idées/tuyau/lien si t'as le temps? Ca serais super sympa
      "Tout le monde savait que c'était impossible. Est arrivé un qui ne le savait pas et qui l'a fait !" Marcel Pagnol ////// "Certains voient les choses telles qu’elles sont et se disent pourquoi donc ? D’autres rêvent de choses qui n’ont jamais existé et se disent pourquoi pas !" George Bernard Shaw

      Commentaire


      • #4
        Normalement si c'est salé ça devient beaucoup plus délicat ... mais je préfère te prévenir que je ne code pas
        Ce que je peu te proposer c'est de tester un de tes pass sous RT afin de voir si il tient et pourquoi pas sous bruteforce.

        Essaye de me sortir un pass sur une longueur de six (c'est sur cette longueur que je bosse pour l'instant).

        La collisions c'est quand deux empreintes successive se chevauche, ce qui à pour résultât d'invalider toute la longueur de chaine précédent cette collision. Comme tu compte créer qu'une empreinte à la fois ça ne pose pas de souci.

        Regarde ce lien au format PDF tu vas mieux comprendre

        https://www.sstic.org/media/SSTIC201...-schneider.pdf

        ÉDIT

        D'apres ce que je vois tu colle un sel de 7 ce qui veux dire qu'un pass sur 4 de type Alan demanderais une table/bruteforce allant jusqu'à 11.

        Par contre ton sel me semble être statique à moin qu'il n'utilise l'horloge ?
        Certain utilise le pseudo pour crée un sel dynamique.
        Le faîte d'avoir un sel statique peu compromettre la totalité des pass si il est découvert.

        Il me semble qu'il existe des attaques par mack avant/après l'empreinte. Essaye de regarder pour en mettre 2 qui ne sois pas "figé"
        Dernière modification par vances1, 07 mars 2012, 17h18.

        Commentaire


        • #5
          J'ai survolé ton pdf, faudrais que je lise ça à tête reposé. Sinon je mélange, sel dynamique et statique, je voulait pas me baser sur le pseudo, si vous désirer en changer, le mdp ne marchais plus... mais en fait c'est rare et je vais le rajouter dans l'algo en fait le principe de mon script c'est :
          on récupere le pseudo, l'id dans la table, le time d'inscription, le sel statique commun à tous, et le mdp.
          On utilise whirtpool pour hasher tout ça en fonction d'une variable aléatoire qu'on genere
          On cache la variable aléatoire dans le hash final pour pouvoir la récuperer pour la comparaison
          "Tout le monde savait que c'était impossible. Est arrivé un qui ne le savait pas et qui l'a fait !" Marcel Pagnol ////// "Certains voient les choses telles qu’elles sont et se disent pourquoi donc ? D’autres rêvent de choses qui n’ont jamais existé et se disent pourquoi pas !" George Bernard Shaw

          Commentaire


          • #6
            Rien empêche de le ré-hacher si le pseudo est changé bien au contraire un petit random sur le pseudo avant hachage serait un petit plus

            vances1 random. casv1ne. > salage

            Essaye de faire un sel sur 8 mini et si le pseudo fait moin tu peux lui adjoindre des caractère avant ou après la randomisation :P
            Dernière modification par vances1, 08 mars 2012, 16h19.

            Commentaire

            Chargement...
            X