J'ai écrit une fonction de hachage pour la génération de mot de passe et de clé, mais j'ai réalisé assez rapidement que pouvoir inverser le hachage était très utile, donc j'ai écrit une fonction inverse, cependant, cela fonctionne. Je ne comprends pas pourquoi cela ne fonctionne pas.Pourquoi cette fonction unhash ne pas inverser ce hachage?
function hash64(n:uint):uint
{
n = (~n) + (n << 21);
n = n^(n >> 24);
n = (n + (n << 3)) + (n << 8);
n = n ^(n >> 14);
n = (n + (n << 2)) + (n << 4);
n = n^(n >> 28);
n = n + (n << 31);
return n;
}
function unhash64(n:uint):uint
{
n = (~n) - (n >> 21);
n = n^(n << 24);
n = (n - (n >> 3)) - (n >> 8);
n = n^(n << 14);
n = (n - (n >> 2)) - (n >> 4);
n = n^(n << 28);
n = n - (n >> 31);
return n;
}
Sortie dans l'alimentation 1000:
Hashed from 1000: 1221775646
Unhash output: 1963490760
Qu'avez-vous prévu? 1000? – Organis
Oui, c'est impossible? – ZxZ
C'est le but de la cryptographie, en fait: il ne devrait pas être ** possible de recréer les données d'origine à partir du hachage. Autrement que la force brute au cours des années, que cela. – Organis