Ich schrieb eine Hashing-Funktion für die Passwort- und Schlüsselgenerierung, erkannte aber ziemlich schnell, dass die Möglichkeit, den Hash umzukehren, sehr wertvoll war, also schrieb ich eine entgegengesetzte Funktion, jedoch dosent Arbeit. Ich verstehe nicht, warum das nicht funktioniert.Warum deaktiviert diese Unhash-Funktion diesen Hash nicht?
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;
}
Ausgabe bei 1000 eingespeist:
Hashed from 1000: 1221775646
Unhash output: 1963490760
Was haben Sie erwartet? 1000? – Organis
Ja, ist das unmöglich? – ZxZ
Das ist der Punkt der Kryptographie, eigentlich: Es sollte ** nicht möglich sein, die ursprünglichen Daten aus dem Hash wiederherzustellen. Sonst als es im Laufe der Jahre brutal zu erzwingen, dass es. – Organis