Solution au code tronqué de 16 bits dans php md5 : 1. Convertissez le code au format binaire original de 16 octets en hexadécimal ; 2. Prenez "substr(md5($str),8,16) ;" La méthode d'interception résout le problème des caractères tronqués.
L'environnement d'exploitation de cet article : système Windows 7, PHP version 7.1, ordinateur DELL G3
php utilise la fonction md5 pour générer un Valeur md5 16 bits et renvoie des caractères tronqués Raisons et solutions
J'ai toujours utilisé des codes md5 32 bits Récemment, il y a eu une demande pour utiliser des codes md5 16 bits. la méthode suivante pour générer des codes md5, mais le résultat a été renvoyé des caractères tronqués.
$code = md5($str,true);//$code是乱码
J'ai regardé à nouveau attentivement le manuel. La description du deuxième paramètre dans le manuel est la suivante : Si le raw_output facultatif est défini sur TRUE, alors le résumé du message MD5 sera un format binaire brut de 16 octets renvoyé.
La définition de la valeur de retour par défaut pour la fonction md5 est : renvoie la valeur de hachage sous la forme d'un nombre hexadécimal de 32 caractères.
En d'autres termes, ce que nous utilisons habituellement md5 pour renvoyer est un nombre hexadécimal d'une longueur de 32 octets. Si le deuxième paramètre est défini sur true, un format binaire brut d'une longueur de 16 octets est renvoyé. Bien que cela soit un peu alambiqué, il est évident que les deux formats de retour sont complètement différents, ce qui conduit à la génération de caractères tronqués.
Il existe deux solutions. L'une consiste à convertir le code au format binaire original de 16 octets en hexadécimal ; l'autre consiste à l'intercepter, car le 8ème code md5 de 32 bits d'une valeur est de 24 bits et Les chaînes md5 16 bits sont les mêmes.
Ci-joint le deuxième code de solution :
$code = substr(md5($str),8,16);//$code是16位的md5码。
Étude recommandée : "Tutoriel vidéo PHP"
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!