Maison >développement back-end >tutoriel php >Le hachage PHP peut-il générer des URL compactes ?
Les services de raccourcissement d'URL comme TinyURL condensent efficacement les URL longues en chaînes plus courtes et plus gérables. Ces services utilisent des techniques de hachage pour atteindre cet objectif.
Cependant, contrairement au codage entier base 36 de TinyURL, une fonction PHP qui crée un véritable hachage sera au centre de cette discussion. L'objectif est de générer un hachage ne dépassant pas 8 caractères.
Comprendre le hachage pour le raccourcissement d'URL
Le hachage est une opération mathématique qui transforme une entrée de longueur variable en une chaîne de longueur fixe appelée hachage. La sortie est unique pour une entrée donnée et irréversible, ce qui la rend adaptée à la sécurité des données et au raccourcissement d'URL.
Une implémentation PHP
Considérez la fonction PHP suivante basée sur le Algorithme MurmurHash3 :
<code class="php">function murmurHash3($data) { $nblocks = strlen($data) >> 2; $h1 = 0; $c1 = 0xcc9e2d51; $c2 = 0x1b873593; $r1 = 15; $r2 = 13; $m = 5; $k = 0; for ($i = 0; $i < $nblocks; $i++) { $k = $h1; $h1 = $h1 ^ (ord($data[$i*4+3]) << 24 | ord($data[$i*4+2]) << 16 | ord($data[$i*4+1]) << 8 | ord($data[$i*4])); $h1 = math_imul($h1, $c1); $h1 = ((($h1 << $r1) | ($h1 >> (32 - $r1))) ^ $m) & 0xffffffff; $k = mul($k, $c2); $k = ((($k << $r2) | ($k >> (32 - $r2))) ^ $m) & 0xffffffff; $h1 = ($h1 ^ $k) & 0xffffffff; } $tail = strlen($data) & 3; switch ($tail) { case 3: $h1 ^= ord($data[($nblocks << 2) + 2]) << 16; case 2: $h1 ^= ord($data[($nblocks << 2) + 1]) << 8; case 1: $h1 ^= ord($data[($nblocks << 2)]) & 0xff; $h1 = mul($h1, $c1); $h1 = ((($h1 << $r1) | ($h1 >> (32 - $r1))) ^ $m) & 0xffffffff; } return substr(base_convert($h1, 10, 16), 0, 8); }</code>
Cette fonction prend une chaîne d'entrée et génère un hachage hexadécimal de 8 caractères. Le hachage résultant peut être utilisé comme identifiant d'URL court en conjonction avec une base de données appropriée.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!