Maison > développement back-end > Problème PHP > Comment résoudre le problème des caractères tronqués lorsque php md5 génère 16 bits

Comment résoudre le problème des caractères tronqués lorsque php md5 génère 16 bits

藏色散人
Libérer: 2023-03-10 06:48:01
original
3391 Les gens l'ont consulté

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.

Comment résoudre le problème des caractères tronqués lorsque php md5 génère 16 bits

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是乱码
Copier après la connexion

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码。
Copier après la connexion

É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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal