Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3988 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  [crypto] En quoi ça consiste exactement la technique du hash ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[crypto] En quoi ça consiste exactement la technique du hash ?

n°310861
Evolvox
Toujours y croire, toujours...
Posté le 16-02-2003 à 20:40:11  profilanswer
 

Bon, j'ai mis ça dans php, mais ça concerne toutes les catégories je pense... Bon, tout est dans la question  :??:

mood
Publicité
Posté le 16-02-2003 à 20:40:11  profilanswer
 

n°310862
Taz
bisounours-codeur
Posté le 16-02-2003 à 20:41:27  profilanswer
 

ben à obtenir une clef de taille fixe à partir de donénes de taille variable. les fonctions te hashage doivent tendre à etre injectives. exemple : md5

n°310865
Evolvox
Toujours y croire, toujours...
Posté le 16-02-2003 à 20:45:46  profilanswer
 

Oui, mais je comprends pas ce qu'il se passe exactement ? J'ai jamais fait de crypto, j'aimerais bien, si possible, avoir une réponse compréhensible pour un newbie ;) Parce que "tendre à être injectif", c'est un peu du chinois pour moi là...

n°310870
gloop
Posté le 16-02-2003 à 20:48:28  profilanswer
 

une fonction de hachage permet de trouver une empreinte fixe à partir d'un texte variable. et tu ne dois pas pouvoir trouver le texte original à partir de l'empreinte. une bonne fonction de hachage doit aussi t'assurer que trouver 2 textes avec une meme empreinte est tres difficile.
un exemple en + de celui de taz: sha

n°310883
L0k
Posté le 16-02-2003 à 21:10:10  profilanswer
 

Ce que je ne comprend pas, c'est que la commande md5() en php donne toujours le même résultat, ce qui est logique. Celà veut dire pour moi que le programme fait toujours exactement le même encodage. Mais alors pk ce ne serait pas possible de le faire dans l'autre sens ?


Message édité par L0k le 16-02-2003 à 21:10:36
n°310895
gloop
Posté le 16-02-2003 à 21:23:18  profilanswer
 

L0k a écrit :

Ce que je ne comprend pas, c'est que la commande md5() en php donne toujours le même résultat, ce qui est logique. Celà veut dire pour moi que le programme fait toujours exactement le même encodage. Mais alors pk ce ne serait pas possible de le faire dans l'autre sens ?


heuresement que t'as toujours le meme resultat a partir de la meme source.
les fonctions de hachage ne sont pas bijectives. ca n'a rien a voir avec du cryptage

n°310923
monsieur t​omate
Posté le 16-02-2003 à 21:51:03  profilanswer
 

g vu qq part kon partait du fait kil était plus facile de multiplier des nbres premiers pour obtenir un résultat tjrs différent ke résoudre l'équation ki ferait ressortir ces nbres premiers, définis à partir d'une fonction. mais y'a longtps ke g lu ça et ct ptetre des conneries... ^^


---------------
HardGamers.org
n°310926
Taz
bisounours-codeur
Posté le 16-02-2003 à 21:55:15  profilanswer
 

ben c'est vrai avec les processuers acutles. mais pas avec les processeurs quantiques

n°310928
gloop
Posté le 16-02-2003 à 21:56:48  profilanswer
 

Monsieur Tomate a écrit :

g vu qq part kon partait du fait kil était plus facile de multiplier des nbres premiers pour obtenir un résultat tjrs différent ke résoudre l'équation ki ferait ressortir ces nbres premiers, définis à partir d'une fonction. mais y'a longtps ke g lu ça et ct ptetre des conneries... ^^


si tu pouvais eviter d'ecrire comme un porc, je pourrais comprendre  ta question  :(

n°310982
HelloWorld
Salut tout le monde!
Posté le 17-02-2003 à 00:31:48  profilanswer
 

Un exemple vaut mieux que de longs discours : une fonction de hachage hyper simple et hyper merdique : la parité.
Si le nombre est pair : renvoyer 0.
S'il est impair renvoyer 1.
Quelque soit la taille du nombre, la valeur générée a la même longueur (1 chiffre).
Elle est injective => à partir de h(x), tu peux pas retrouver la valeur de x (y'en a une infinité).


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
mood
Publicité
Posté le 17-02-2003 à 00:31:48  profilanswer
 

n°310983
Kristoph
Posté le 17-02-2003 à 00:40:36  profilanswer
 

HelloWorld a écrit :

Un exemple vaut mieux que de longs discours : une fonction de hachage hyper simple et hyper merdique : la parité.
Si le nombre est pair : renvoyer 0.
S'il est impair renvoyer 1.
Quelque soit la taille du nombre, la valeur générée a la même longueur (1 chiffre).
Elle est injective => à partir de h(x), tu peux pas retrouver la valeur de x (y'en a une infinité).


 
Bizarre, ça correspond pas du tout a ma definition de l'injectivité ;)
 
f(x) : S -> T est injective ssi pour tout (s1, s2) dans S², f(s1) = f(s2) => s1 = s2
 
Je dirais même que ta fonction h(x) n'est absolument pas et ne doit pas être injective ...

n°310985
Taz
bisounours-codeur
Posté le 17-02-2003 à 00:49:25  profilanswer
 

si elle était injective, alors t'aurais trouver une fonction de hacahge parfaite. attention à ne pas confondre injective et réversible

n°310991
HelloWorld
Salut tout le monde!
Posté le 17-02-2003 à 04:48:44  profilanswer
 

C'est à dire que ... une petite révision s'imposait ! :)
LOk>
c'était pour illustrer l'histoire du "on peut le faire dans un sens et pas dans l'autre". Pour ce que j'en dit de +, oublie, j'ai mélangé / confondu.


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
n°311081
kileak2
Posté le 17-02-2003 à 11:12:10  profilanswer
 

Kristoph a écrit :


 
Bizarre, ça correspond pas du tout a ma definition de l'injectivité ;)
 
f(x) : S -> T est injective ssi pour tout (s1, s2) dans S², f(s1) = f(s2) => s1 = s2
 
 


 
t'as un exemple concret ?  ca m'intéresse :)
Je vois pas comment f(s1)=f(s2) pour tout couple s1 s2 de S.
 
a+

n°311092
Taz
bisounours-codeur
Posté le 17-02-2003 à 11:18:34  profilanswer
 

ben f: x -> x est injective
 
par contre g : x -> x² n'est l'est pas

n°311098
kileak2
Posté le 17-02-2003 à 11:28:01  profilanswer
 

++Taz a écrit :

ben f: x -> x est injective
 
par contre g : x -> x² n'est l'est pas


 
j'ai une définition :

Citation :

Un app injective est une appli f d'un ensemble A ds un Ens B, telle que tout élément de B a au plus un antécédent dans l'ensemble A.


 
Ben je pige pas :)
 
si x² a au plus un antécédent ds A (qui est x) non ?
 
Ok c x² est bijectif. Mais justement, c la nuance que je saisis pas :(

n°311101
dsls
Posté le 17-02-2003 à 11:30:26  profilanswer
 

kileak2 a écrit :


 
si x² a au plus un antécédent ds A (qui est x) non ?
 
Ok c x² est bijectif. Mais justement, c la nuance que je saisis pas :(


Ben non ... x² a 2 antécédents : x et (-x)
x² n'est pas bijective sur ]-inf,+inf[. En revanche elle l'est sur [0,+inf[ ou ]-inf,0]


Message édité par dsls le 17-02-2003 à 11:31:33
n°311121
kileak2
Posté le 17-02-2003 à 11:44:52  profilanswer
 

Dsls a écrit :


Ben non ... x² a 2 antécédents : x et (-x)
x² n'est pas bijective sur ]-inf,+inf[. En revanche elle l'est sur [0,+inf[ ou ]-inf,0]


 
LOL kel con je fais :lol:  
N'empêche que je suis pas plus avancé pour l'injectif :)

n°311137
Taz
bisounours-codeur
Posté le 17-02-2003 à 12:08:54  profilanswer
 

Dsls a écrit :


Ben non ... x² a 2 antécédents : x et (-x)
x² n'est pas bijective sur ]-inf,+inf[. En revanche elle l'est sur [0,+inf[ ou ]-inf,0]

correct

n°311151
LeGreg
Posté le 17-02-2003 à 12:35:48  profilanswer
 

kristoph a raison
si une fonction de hachage est injective alors elle est réversible. (la plupart des fonctions de cryptage sont injectives sinon pas de decryptage possible : ce n'est pas le cas de md5 qui n'est pas fait pour decrypter)
 
Le fait de ne pas pouvoir trouver le texte original a partir de l'empreinte est important mais ca n'est le plus souvent pas le simple but.
 
Exemple: je veux classer des chaines dans une une structure de donnee ad hoc, je peux utiliser une hash map ou un simple tableau qui a partir d'une fonction de hachage me permettra de trouver rapidement la position approximative de ma chaine dans la structure (et de trouver sa position exacte par affinements successifs).
 
LeGreg


Message édité par LeGreg le 17-02-2003 à 12:37:42

---------------
voxel terrain render engine | animation mentor
n°311163
Taz
bisounours-codeur
Posté le 17-02-2003 à 13:05:41  profilanswer
 

ben pas forcément: si f A -> B est injective, il peut exister y appartenant à B tel que f^-1(y) n'a pas de solutions dans A
 
enfin bref, à vous lire j'ai l'impression que md5 est le meilleur algo de compression du monde.
 
les algorithmes de hashage sont irréversibles. la clef appartient à un ensemble fini alors que les données non. voir l'exemple de la parité. quand on dit injective pour une fonction de hashage, c'est pour dire qu'il est difficile de trouver M1, M2 tel que hash(M1)==hash(M2)
 

n°311178
Mara's dad
Yes I can !
Posté le 17-02-2003 à 13:26:33  profilanswer
 

Oui, les algo de hashage ne sont pas injectif, ils sont surjectifs !
 


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
n°311180
Taz
bisounours-codeur
Posté le 17-02-2003 à 13:37:59  profilanswer
 

Mara's dad a écrit :

Oui, les algo de hashage ne sont pas injectif, ils sont surjectifs !
 
 

effectivement, on est pas des sodomites matheuses.
 
 
pas tout à fait: les fonctions de hash sont surjectives ce qui entrainent des collisions, mais une fonction parfaite n'est pas surjective.
 
de même elles tendent à etre injectives


Message édité par Taz le 17-02-2003 à 13:39:14
n°311189
dsls
Posté le 17-02-2003 à 13:46:10  profilanswer
 

Mara's dad a écrit :

Oui, les algo de hashage ne sont pas injectif, ils sont surjectifs !


 
Euh ... c'est prouvé ça ? Ca veut dire que pour un hachage H donné, il existe au moins une donnée D telle que MD5(D) == H ? Ca ne m'a pas l'air si évident à démontrer que ça ...

n°311210
LeGreg
Posté le 17-02-2003 à 14:28:51  profilanswer
 

++Taz a écrit :

ben pas forcément: si f A -> B est injective, il peut exister y appartenant à B tel que f^-1(y) n'a pas de solutions dans A
enfin bref, à vous lire j'ai l'impression que md5 est le meilleur algo de compression du monde.


 
Ce n'est pas parce que tu n'es pas un sodomite matheux
que tu dois baiser les maths (qui ne t'ont rien demandé :D)
 
je ne sais pas où tu as été pêcher que md5 pouvait
être utilise pour faire de la compression d'ailleurs ?
(la compression qui nécessite également une fonction injective sinon la décompression ne marche pas..)
 
Après quelques recherches sur google, je commence a me demander
si ta confusion ne vient pas d'une erreur de traduction de
ca:
http://www.php.net/manual/en/function.crypt.php
en ca :
http://www.teaser.fr/docs/php/php4/function.crypt.html
(ou comment embrouiller tout le monde en traduisant "one way" par "injective" )
 
LeGreg


Message édité par LeGreg le 17-02-2003 à 14:32:09

---------------
voxel terrain render engine | animation mentor
n°311217
Mara's dad
Yes I can !
Posté le 17-02-2003 à 14:40:38  profilanswer
 

++Taz a écrit :

effectivement, on est pas des sodomites matheuses.
 
 
pas tout à fait: les fonctions de hash sont surjectives ce qui entrainent des collisions, mais une fonction parfaite n'est pas surjective.
 
de même elles tendent à etre injectives


 
Ben une fonction parfaite n'existe pas par définition !
(Un fonction de hachage injective, je veux dire ;) )
 
Une fonction de hachage associe une clef de longeur fixe à des données de taille variable, donc :
 
1- La clef de longueur fixe est un ensemble fini (Corrigé !).
2- Les donnée de taille variable sont dans un ensemble infini.
 
Il n'y a donc aucune chance qu'une fonction de hachage soit injective.
 
En revanche une fonction parfaite doit être surjective.
De plus si possible, les éléments de l'ensemble d'arrivé (les clefs) doivent avoir la même "probabilité" d'être choisi.
 
L'exemple parfait est donc la parité.
Ou n'importe quel "checksum".
 
Celà dit, rien n'empèche de faire une "bonne" fonction de hachage qui ne soit pas surjective, ou pout laquelle la surjectivité soit difficile à démontrer.
 
Si vous pensez que c'est des conneries, merci de développer.


Message édité par Mara's dad le 17-02-2003 à 14:43:37

---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
n°311277
Kristoph
Posté le 17-02-2003 à 15:29:59  profilanswer
 

Je ne suis pas d'accord avec le fait qu'une fonction de hashage parfaite doit être surjective.
 
Pour moi, la fonction de hashage parfaite serait injective.
 
Et une fonction de hashage parfaite utilisée pour de la crypto doit être en plus de cela "non inversible". Ou plustot, elle serait quasiment impossible à inverser.
 
Bien sur, il est impossible d'avoir une fonction injective quand tu le resultat de ta fonction tiens dans 32 bits alors que le texte traité necessite 2 Mo :D

n°311283
Taz
bisounours-codeur
Posté le 17-02-2003 à 15:42:02  profilanswer
 

je faisais de l'humour pour la compression, parce qu'apparemment, c'etait pas clair pour tout le monde

n°311349
Mara's dad
Yes I can !
Posté le 17-02-2003 à 16:22:33  profilanswer
 

Bon, j'ai trouvé çà :
 
http://www.rsasecurity.com/rsalabs/faq/2-1-6.html
 
Et çà :
 
http://www.securite.teamlog.com/pu [...] /19/23/15/
 
Et fanchement je me demande bien comment on peut affirmer un truc pareil :
 

Citation :

2 messages différents (même à 1 bit) ne produiront "jamais" la même empreinte


 
Pour moi, c'est mathématiquement impossible !
Mais c'est sans doute par abus de simplification.
 
L'article de RSA est plus détaillé là dessus, même si :
 

Citation :

The basic requirements for a cryptographic hash function are as follows.  
 
The input can be of any length.  
The output has a fixed length.  
H(x) is relatively easy to compute for any given x.  
H(x) is one-way.  
H(x) is collision-free.


 
Me semble contenir des contraintes tout aussi impossible à concilier mathématiquement.
 
En fait l'explication tiens plus à la "difficulté" de calcul qu'à une impossibilité stricte.
 
Mais bon, soit je sais pas lire, soit même chez RSA ils ne savent pas bien expliquer de quoi ils parlent  :??:  
 

Citation :

If, given a message x, it is computationally infeasible to find a message y not equal to x such that H(x) = H(y), then H is said to be a weakly collision-free hash function.


ET

Citation :

A strongly collision-free hash function H is one for which it is computationally infeasible to find any two messages x and y such that H(x) = H(y).


 
Je ne comprends pas bien en quoi un algo est "weakly collision-free" et en quoi l'autre est "strongly collision-free" ?
 
Sauf que dans le premier cas x, est donné et dans l'autre x et y sont libres, ce qui rend la comparaison douteuse  :??: again.
 
M'enfin, y z'ont sans doute raison.
 
Conclusion, le terme mathématique d'injectivité, est mal adapté pour une fonction de hashage.
 
Il est mathématiquement incorrects, mais algorithmiquement suffisant à cause de la quazi-impossibilité de calcul.


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
n°311361
Kristoph
Posté le 17-02-2003 à 16:33:45  profilanswer
 

Le terme "injectif" n'est pas algorithmiquement suffisant, il est completement incorrect. Mais il est vrai que être "collision-free", ça ressemble à de la sous injectivité :D
 
Pour le problème des "weakly collision-free" et "strongly collision-free", il est facile de voir que le deuxième cas englobe le premier. On peut imaginer des situations dans lesquel il serait interressant pour un hacker d'avoir 2 messages differents avec la même signature.
 
Et pour info, md5 est au moins "weakly collision-free" quand vous fixez la taille max des messages. Il est possible d'obtenir un message qui à une clef voulue en fesant grandir un message de façon controlée.

n°311649
LeGreg
Posté le 17-02-2003 à 22:49:43  profilanswer
 

++Taz a écrit :

je faisais de l'humour pour la compression, parce qu'apparemment, c'etait pas clair pour tout le monde


 
il y a suffisamment de confusion dans ce post et j'ai l'impression que tu en rajoutes.
 
Je saurais que tu fais de l'humour si je te connaissais suffisamment pour savoir que tu ne racontes jamais de conneries mais ce n'est pas le cas.
 
LeGreg


---------------
voxel terrain render engine | animation mentor
n°311651
Taz
bisounours-codeur
Posté le 17-02-2003 à 22:52:38  profilanswer
 

qu'est ce que j'ai dit de faux? si c'est sur ces débat d'injection/surjection, on s'est tous emmélés
 
ou tu dis conneries dans un autre sens  :D

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  [crypto] En quoi ça consiste exactement la technique du hash ?

 

Sujets relatifs
c'est quoi exactement xml[TeX - LaTeX] comment positionne-t-on exactement une image ??
Passer des HASH TABLE de scripts CGI en scripts CGIoptimisation sous php quel technique est la plus rentable?
[Perl] itérer sur les valeurs d'un tableau de hash de hash...c'est koi SGBD exactement ?
Crypto: Data Encryption Standard, besoin d'aide pour le Key Schedule[Access] Question technique sur une comparaison de chaine en VBA
.NET c koi exactement ??comment positionner exactement une image genre a8cm a gauche ...etc
Plus de sujets relatifs à : [crypto] En quoi ça consiste exactement la technique du hash ?


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)