J'ai un petit problème où il faut faire un hachage d'un nombre d'environ 10 chiffres en un nombre de 6 chiffres. Le hachage doit être déterministe.Un hachage simple, répétable d'un UInt32 à un UInt16
Il est plus important que le hachage ne nécessite pas beaucoup de ressources.
Par exemple, dire que j'ai un certain nombre, x, comme 123456789
Je veux écrire une fonction de hachage qui me donne un certain nombre, y, dos comme 987654.
alors comme je l'avais pour avoir une fonction qui prend les paramètres x et y, réapplique le hachage sur x et vérifie que le résultat est y.
Il devrait être difficile de calculer les valeurs d'entrée possibles étant donné le hachage. Ma première idée de multiplier les paires de chiffres a conduit à beaucoup de valeurs hachées en double. J'ai le sentiment que ce genre de problème a une sorte de solution élégante, mais je ne peux pas y penser moi-même.
Quelqu'un peut-il m'aider ici? Merci d'avance :)
reclassé à "hashing" –
Vous n'êtes pas entièrement clair l'entrée et la sortie de données que vous attendez (10 _binary_ digits? _decimal_ digits? Etc.). Cependant, je peux dire que si vous vous attendez à quelque chose comme convertir 0000000000 en 9999999999 000000 en 999999 alors il ne peut pas être fait sans quelques alias (doublons) valeurs. Si vous voulez réellement le convertir en uint16, alors utiliser un simple CRC16 est à peu près aussi bon que n'importe quel. Goodle le code :) – tyranid
a essayé de clarifier la question mieux - je vais Google CRC16 en attendant – Columbo