Aller au menu - Aller au contenu

Bien utiliser les fonctions de hachage


Pour accéder à cette section
Connectez-vous !
connexion_rpx
Page 1 
Pseudo Commentaire
Page 1 
Hors ligne L·P # Posté le 23/05/2008 à 19:07:34
Avatar
Modérateurs

Sympathique article mais une chose cependant me chiffonne.

Il me semble que la fonction crypt de PHP renvoie des résultats différents du fait qu'une 'graine' aléatoire est utilisée si elle n'est pas définie à la main. (Et aussi du fait qu'en fonction de cette graine il se peut que l'algorithme de hash ne soit pas le même.)
Cf : Doc PHP sur crypt.

Donc ce n'est pas un hash 'totalement aléatoire'.

Serveur Personnel : leo-server.
Productions en : PHP, C++, Ti-Basic, photographiques.
 
Hors ligne Léo # Posté le 23/05/2008 à 20:14:18
Avatar

Tutoriel très intéressant ;) Il manque selon moi que tu dises clairement comment comparer le mot de passe tapé et le mot de passe dans la BDD, même si je crois savoir faire :)
Hors ligne Artefact2 # Posté le 23/05/2008 à 22:27:14
Attention, je mords
Avatar

Ville : Reims
Pays : France métropolitaine

@ Asdibath : oui, je sais. Cependant, lorsqu'on ne spécifie aucune graine de départ, PHP en choisit une aléatoire. Dans le cas ou la graine est identique, alors le résultat ne différera pas. Cependant il y a peu de chances que la graine aléatoire soit identique à une autre.

@ Léo : je ne souhaite pas donner de code précis car ce tutoriel est commun pour tous les langages :)

Image utilisateur
Image utilisateur
 
Hors ligne Depix # Posté le 23/05/2008 à 22:45:27
Biologie
Avatar

Bon tutoriel !
Je mets 18 :)
sinon j'ai une idée pour crypter afin d'éviter les collisions :
Code : PHP
1
2
3
4
<?php
$var = sha1("Hello World") ;
echo md5("$var") ;
?>

que pensez vous ?

- Tutoriel de PureBasic
- Mon blog
- Wenty (Prochainement)
 
Hors ligne Artefact2 # Posté le 28/05/2008 à 16:05:40
Attention, je mords
Avatar

Ville : Reims
Pays : France métropolitaine

Depix > Oui, j'en ai parlé. J'ai proposé de combiner les fonctions de hachage et d'utiliser du sel. :)

Image utilisateur
Image utilisateur
 
Hors ligne Jaloyan1 # Posté le 11/06/2008 à 22:20:08
Sms = portable,forum = clavier
Avatar

Tutoriel médiocre.

Il y a des choses fausses.
Comme le QCM, dans un mégaoctet, il y a 1024 KO,
dans 1 KO, il y a 1024 Octets.
Donc 1024*1024 = 1048576
et le tout multiplié par 8 : 8388608 bits

Et non pas 8000000


A changer.



Et aussi il y a une chose très importante :

byte 
e octet



Un octet = 8 bits

un byte fait au moins 8 bits.
Il peut très bien en faire 16 ou plus.


Sur l'architecture de windows, il fait 8 bits, mais pas sur toutes les architectures.


Bon j'espère que tu auras corrigé ces grosses erreurs.
Note médiocre : 8/20

Si quelqu'un vous dit : "Je me tue à vous le répéter", laissez-le mourir.
:D int x = 0; x >?= (a < b)?((a < c)?((a < d)?a:d):((c < d)?c:d)):((b < c)?((b < d)?b:d):((c < d)?c:d));
Quelqu'un a compris ce que ce code fait? :-°
 
Hors ligne Artefact2 # Posté le 12/06/2008 à 10:28:01
Attention, je mords
Avatar

Ville : Reims
Pays : France métropolitaine

@Jaloyan1 : je suis désolé, il y a 1000 octets dans un Ko. Les préfixes binaires ont été normalisés depuis 1998. Avant en effet, 1 Ko valait 210 octets mais plus maintenant. Source : http://fr.wikipedia.org/wiki/Octet#Mul [...] rmalis.C3.A9s

De plus, dixit la même page, "Le byte, qui est un ensemble de bits adjacents, a presque toujours une taille d'un octet et les deux mots sont généralement, mais abusivement, considérés comme synonymes.". Tu le dis toi même, dans 95% des cas ils sont équivalents. Je corrigerai la faute quand même, mais ça va prendre du temps de tout faire re-valider :-°

Image utilisateur
Image utilisateur
 
Hors ligne 1337833K # Posté le 25/06/2008 à 08:06:34
lock cmpxchg8b eax

Pitié, ne rentrez pas dans le débat 1000 vs 1024 !
Même si, personnellement, je trouve cette normalisation assez débile vu que la quasi-totalité du matériel fonctionne pour traiter des paquets de puissances de 2 (exemple: la plupart des disques durs qui sont lus par paquet de 512 octets).

Citation : Jaloyan1
Un octet = 8 bits

un byte fait au moins 8 bits.
Il peut très bien en faire 16 ou plus.


Sur l'architecture de windows, il fait 8 bits, mais pas sur toutes les architectures.

L'architecture de Windows ? Depuis quand Windows est une marque/un type de processeur ?
Je suppose que tu voulais dire "l'architecture sur laquelle Windows tourne" ... :-°
 
Hors ligne Artefact2 # Posté le 25/06/2008 à 13:16:24
Attention, je mords
Avatar

Ville : Reims
Pays : France métropolitaine

Il fallait bien choisir. Autant choisir la norme ;)

Sinon, il parlait de l'architecture x86. Sur l'architecture x86_64, un int occupe 8 octets en mémoire par exemple (au lieu de 4 pour un int sur une architecture x86). Pour les octets, ils font presque toujours 8 bits sauf sur les très vieux PC ou un octet pouvait faire 6 ou 7 bits (dixit Wikipedia).

Image utilisateur
Image utilisateur
 
Hors ligne cypher666 # Posté le 11/08/2008 à 01:42:46
Heu....
Avatar

Ville : Paris
Pays : France métropolitaine

Très bon tutoriel :)
Sur mon site j'utilise un assemblage de différentes fonctions de hachage combinées.
Et c'est super efficace.
Quand au salage, je pense que c'est réservé au site nécessitant une haute sécurité. cr cela demande de mettre en place beaucoup de moyens ^^

Voila, bonne sécurisation de votre site à tous ;)


Image utilisateur


Quand vous allez sur un site amateur, cliquez sur les publicités, ça rapporte de l'argent au webmaster et vous ça ne vous coûte rien :)
Image utilisateur



 
Hors ligne alexises # Posté le 23/08/2008 à 02:22:00
merci m@téo pour la v3
Avatar

je reviens sur le fait de l'octet tu devrai préciser dans l'intituler de la question. mais les uniter si te donne raison je te lasse voir wikipédia pour en savoir plus :D
sinon je met une bnne note vue que le sujet est abborder simplement et est bien pousser et documenter :D

Image utilisateur
 
Hors ligne cyril5789 # Posté le 24/09/2008 à 14:18:20
Technicien Supérieur !
Avatar

Ville : Bischoffsheim
Pays : France métropolitaine

tres bon tuto ! mais il manque franchement des exemple ! du code PHP, pour montrer comment utiliser correctement un grain de sel pour nos fonction... pour avoir la meilleure fonction de hashage possible !

Image utilisateur
 
Hors ligne Dutiona # Posté le 15/02/2009 à 00:03:01
Vis pour être heureux !
Avatar

études : EISTI

@cyril5789 Pourquoi tu veux mettre du code php dans un tuto d'algo qui se veut généraliste et donc au dessus de tout langage de programmation. Il n'y a pas que le php comme langage pour des exemples. De plus j'ai trouvé le tuto très clair. Il n'y a pas forcément besoin de plus d'explications.
Pour avoir un sel efficasse il faut juste qu'il soit difficile à trouver pour qqun d'autre. Evite ta date de naissance, ton lieu de naissance, le nom de ton chien, ... C'est comme un mot de passe en fait.

@Jaloyan1
byte = octet !!!!!
Tu fais de sacrés confusions ^^ .
Par contre :
byte != bit !!!

He oui, en anglais la traduction exacte de "octet" c'est byte (prononce baïte) par contre, bit (prononce bit...) c'est la même chose partout : c'est 1 ou 0.
Donc tu as tord et Artefact2 avait raison.

J'ai bien aimé toute l'analyse qui a été faite autour des nombres aléatoire en plus de l'analyse des différents algo.

17


Bisous, Nyu

Défiez ma brute !
Eclipse user | Ubuntu (KDE) user | php/sql/xhtml/css/xml/xsl/javascript/java/python/perl/c/scheme coder.
Framework in use: Seraframework (my own one).
In Microeisti staff.
 
Hors ligne source # Posté le 28/03/2009 à 18:39:34
Avatar

A mon avis, c'était vraiment excellent c'est un sujet trés important mais, j'espère bien que vous continue de poster plus de techniques de hachage pour que ce tuto soit plus complet parce que je vois qu'il est proche à l'introduction de cryptographie qu'une démonstration de ce domaine. merci!!^^

L'impossible c'est la difficulté infinie
et puisque il y a pas d'infinie
il y a pas d'impossible .. [Moi :-° ]
 
Hors ligne christophetd # Posté le 23/05/2009 à 08:21:31
is watching you
Avatar
Flux RSS

Ville : Gap
Pays : France métropolitaine

Salut,
Je trouve ton tutoriel très intéressant et bien rédigé.
Il m'a beaucoup appris sur le hashage.
Bravo ;)

Image utilisateur
Mes tutoriels :
Utilisation d'un ORM : les bases de Doctrine (en cours de reconstruction)
Un système de news sans base de données

Image utilisateur


Image utilisateur


 
Hors ligne sebsheep # Posté le 21/07/2009 à 13:26:38

études : Universite Paris Sud 11

Petite note sur le côté "générateur de nombre pseudo aléatoire" : tu ne t'occuppes que de la moyenne du générateur ... mais il n'y a pas que ce facteur ! Que les fonctions de hash passent tous les tests statistiques haut la main est un peu rapide !

Par exemple, si tu prend la suite : 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 ... les fréquences d'apparition de chaque chiffre seront exactement les mêmes ! Mais personne n'ira dire que c'est une suite aléatoire !

"Il y a deux choses infinies dans le monde : l'univers et la bêtise humaine ... mais pour l'univers j'ai un doute" (Parait-il d'un physicien que l'on ne présente plus, ou de quelqu'un d'autre ... )

Explorez les fractales ! - Créez vos partitions de musique !
 
Hors ligne iansus # Posté le 21/07/2009 à 23:14:45
Google is your friend
Avatar

Ville : Genas
Pays : France métropolitaine

Pour les algos de hashage, nous sommes d'accord que le temps de calcul d'un Whirlpool est plus élevé que celui d'un MD5 ou d'un sha1.
D'où la complexité d'établir des rainbow tables pour les mots de passe supérieurs à 8 caractères.

De là, on peut combiner un anti-collision avec un anti-bruteforce en faisant ceci : <?php whirlpool( sha1($pass) . md5($pass) ); .

Le temps de calcul pour construire des tables de correspondance est trop élevé pour un bruteforce efficace, et une collision sur cet algo reviendrait à dire soit que :
  • Le mot de passe testé et le mot de passe réel ont une collision en md5 <strong>ET</strong> en sha1
  • Les empreintes finales de deux mots de passe (testé et réel) forment deux chaînes de 72 caractères ayant le même hash whirlpool, ce qui est quasi impossible !


L'inconvénient, c'est que le whirlpool pour PHP n'est utilisable que grâce à la fonction hash() (whirlpool = algo de hashage 512 bits), utilisable que sous PHP 5 : <?php hash('whirlpool',$pass); // On passe le pass à la machine à laver xD ?>
 
Hors ligne ghuysmans99 # Posté le 31/08/2009 à 10:54:33
Avatar
Flux RSS

Bon tuto, mais pour la taille des unités de stockage :
Pourquoi les gens qui font les normes ont l'affreuse manie de tout calculer en base 10 ? Les PC fonctionnent en base 2, donc les unités sont des puissances de 2. Les rendres "rondes" en base 10 est complètement débile. Et en ce qui me concerne, je reste avec des Ko de 1024o, des Mo de 1024Ko et des Go de 1024Mo.

VB.NET is good ... VB6 is better :D
 
Hors ligne spirit80 # Posté le 20/09/2009 à 15:05:13
I just ♥ LOST !!
Avatar

Ville : Casablanca
Pays : Maroc

Voici le code php pour ceux qui voudrait ajouter du sel à leur mot de passe :
Code : PHP
1
2
3
4
$mdp = 'ton_mot_de_passe';
$sel = rand (1, 10);
$mdp_final = hash('sha512', $mdp|$sel);
echo $mdp_final;

— Hey you, don't you ever follow me on twitter alright :colere2: ?
— OK... That didn't work : Please follow me I always write interesting tweets :'(
 
Hors ligne Marcus02 # Posté le 30/09/2009 à 11:14:17
Avatar

études : UTC

Hey!

Ton tuto est vraiment bien fait et se lit tout seul.

Petite cerise sur le gâteau dans le QCM : je n'avais jamais entendu parler de ces préfixes binaires (malgré des études d'informatique, dixit Wikipedia : pour un usage confidentiel ... c'en est un!).

Continue comme ça!
Bye
Hors ligne gildas # Posté le 18/01/2010 à 22:44:59
3...2...1...PLOP!!!
Avatar

Ville : Bussy st georges
Pays : France métropolitaine

Bon tutoriel, intéressant..
Cependant, tu devrais préciser que quand tu dis, dans le QCM que 1Mo = 1000Ko, c'est par rapport à la convention de 1998 qui a fixé les standards Mio, kio, Gio...
Hors ligne ziko_kelibia # Posté le 03/02/2010 à 16:42:02
Avatar

Salut tous les monde, en fait je cherche une implémentation de fonctions de hachage sur une architecture 8 ou 16-bits. Est ce que quelqu'un pourra m'aider ??
Merci beaucoup
Pour accéder à cette section
Connectez-vous !
connexion_rpx