Ich habe eine PHP-Funktion wie folgt zusammengestellt:
function keyword_hash($keyword) {
return base_convert(substr(md5($keyword), -16), 16, 10);
}
Das Ziel dieser Funktion ist es, einen numerischen Hash-Wert zu erzeugen, den ich in einer Datenbank speichern und für einen Lookup verwenden kann (anstatt zu versuchen, eine Schlüsselwortspalte zu indizieren).
Das Äquivalent dieser Funktion in MySQL ist wie folgt:
SELECT CONV(RIGHT(MD5('some keyword'), 16), 16, 10);
Ich habe überprüft, dass der MD5-String der gleiche ist und dass die substr()-Funktion den Wert, den ich von RIGHT() in der MySQL-Abfrage zurückbekomme, entspricht. Allerdings erhalte ich beim Ausführen von CONV() einen anderen Wert als bei base_convert() generiert wird.
Zum Beispiel erzeugt keyword_hash("some keyword")
einen Wert von 10923672322315740844. Jedoch erzeugt SELECT CONV(RIGHT(MD5('some keyword'), 16), 16, 10)
10923672322315740475, wobei die letzten drei Zahlen unterschiedlich sind.
Was fehlt mir hier? Sollten sie nicht den gleichen Wert produzieren?