Fonction: chaîne en numérique
teuss
-
sebsauvage Messages postés 33415 Statut Modérateur -
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
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:
- Fonction: chaîne en numérique
- Fonction si et - Guide
- Fonction miroir - Guide
- Fonction moyenne excel - Guide
- Fonction remplacer sur word - Guide
- Fonction somme excel - Guide
5 réponses
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.
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.
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
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
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
é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
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
de fonction de conversion de base
tu devrais les récupérer et procéder par essais
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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).
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).
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...
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...