logo

Acerca de

Bienvenido a mi blog, el sitio perfecto para mis inquietudes, experiencias e idas de olla sobre temas de hoy en día.

Historia al azar

Últimas entradas

Últimos comentarios

Enlaces

Meta

photo Luis PeraltaEstado Jabber
Ziritione
Castellón Spain
39.997638, -0.064030

Sindica

Sindícame, por cortesía del subliminal Atom.

15 octubre 2008

Hace un tiempo conté cómo generar un hash FNV con Python, esta vez le ha tocado al PHP. En principio la traducción debería haber sido directa, salvo porque el cabroncete del PHP y las operaciones sobre bits con número de tamaño mayor a 32 bits no se llevan nada bien. Vamos, es que es básico. Así que solución apoyándonos en la librería GMP y su extensión para PHP.

function FNV1a32_hash($str) {
        $prime = "16777619";
        $h = "2166136261";
        $i = 0;
        $s = strlen($str);

        while ($i<$s) {
                $h = gmp_xor($h, ord($str[$i++]));
                $h = gmp_mul($h, $prime);
        }
        return dechex((float)gmp_strval(gmp_and($h, "0x00000000ffffffff")));
}

Lo siento, esta entrada ya no permite comentarios