Fonction: chaîne en numérique

teuss -  
sebsauvage Messages postés 33415 Statut Modérateur -
Bonjour Tout le monde et Merci d'avance pour votre soutien

Je cherche un algo qui me permet à partir d'une chaîne de caractères d'obtenir un numérique sachant que deux chaînes ou caractères différents ne puissent pas avoir le même résultat. En résumé une fonction de hachage de la forme hacher (chaine) --> nombre

Merci
A voir également:

5 réponses

TuXor Messages postés 97 Statut Membre 25
 
Salut,

tu peux essayer de concaténer les valeurs ASCII de tes caractères, et ainsi former des nombres qui soit différants pour chaque chaîne.

Tu devrais avoir plus de détarils si tu en donnais plus (de détails) sur le langage que tu utilise, et sur le reste de ton projet.

En espérant que ça puisse t'aider, bon courage.
0
teuss
 
Bonjour M. TuXor

Merci pour votre réponse

Je pense que la concaténation du code Ascii ne règle pas le problème car on peut avoir la concaténation de deux code ascii qui est égale au code ascii d'un caractère

Merci
0
random Messages postés 1612 Statut Membre 155
 
le problème est la taille du nombre ainsi défini car on peut toujours
écrire 097 au lieu de 97 ou a
si je code a=1 et z =26
pour coder un caractère il me faut 26
pour le suivant 26*26
pour une chaîne courte
genre longtemps je me suis couché de bonne heure
on arrive ainsi à 1.52743E+55
et encore je n'ai pas utilisé les accents
bien évidemment l'idéal serait d'utiliser une base 27
avec une fonction de conversion et une fonction de réversion
ainsi la taille de la cible serait inférieure à celle de la source
c'est juste une idée comme ca
0
teuss
 
Bonjour Random

C'est intéressant ce que tu dis. Est ce que tu peux me donner plus de détails sur l'utilisation de cette base 27 avec quelques exemple si possibles

Merci beaucoup
0
random Messages postés 1612 Statut Membre 155
 
j'ai posté plus haut dans changement de base 36 deux exemples
de fonction de conversion de base
tu devrais les récupérer et procéder par essais
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
sebsauvage Messages postés 33415 Statut Modérateur 15 667
 
L'un des hashs les plus fiables actuellement, c'est SHA-1.

Quasi-garanti de n'avoir jamais de collisions.
La sortie fait 160 bits, ce qui est plus que les 32 bits que tu attend (entier).

Solution plus simple: prendre une CRC32 (qui comme son nom l'indique, sort 32 bits, soit un entier).
CRC32 est nettement plus susceptible de collisions que SHA-1.

Regarde dans ton langage si ce genre de librairie est disponible, ou fais des recherches sur Google (on trouve de nombreuses librairies).
0
teuss
 
Bonjour

En fait ce dont j'ai bésoin c'est l'algo ou le princincipe utilisé dans ces différentes focntions .

Cordialement
0
sebsauvage Messages postés 33415 Statut Modérateur 15 667 > teuss
 
En ce qui concerne CRC32, c'est basé sur les polynômes.

Généralement les hashs sont des opérations chaînées de ou exclusif, rotation et transposition de bits.

==> voir les sources de ces algos:
http://www.koders.com tape CRC32 SHA1 ou MD5 et choisis le langage de ton choix...
0