Heim  >  Artikel  >  Backend-Entwicklung  >  So lösen Sie das Problem verstümmelter Zeichen, wenn PHP MD5 16 Bit generiert

So lösen Sie das Problem verstümmelter Zeichen, wenn PHP MD5 16 Bit generiert

藏色散人
藏色散人Original
2021-05-28 09:15:443345Durchsuche

Lösungen für verstümmelte 16-Bit-Zeichen in PHP MD5: 1. Konvertieren Sie den 16-Byte-Original-Binärformatcode in Hexadezimal; 2. Nehmen Sie das Abfangen von „substr(md5($str),8,16);“ Lösen Sie das Problem verstümmelter Zeichen.

So lösen Sie das Problem verstümmelter Zeichen, wenn PHP MD5 16 Bit generiert

Die Betriebsumgebung dieses Artikels: Windows 7-System, PHP-Version 7.1, DELL G3-Computer

php verwendet die MD5-Funktion, um einen 16-Bit-MD5-Wert zu generieren und verstümmelte Gründe und Lösungen zurückzugeben

Das habe ich immer Ich habe 32-Bit-MD5-Code verwendet. In letzter Zeit besteht eine Nachfrage nach der Verwendung von 16-Bit-MD5-Code. Ich habe das offizielle PHP-Handbuch überprüft und die folgende Methode zum Generieren des MD5-Codes verwendet, aber das Ergebnis war verstümmelter Code.

$code = md5($str,true);//$code是乱码

Habe mir das Handbuch noch einmal genau angesehen. Die Beschreibung des zweiten Parameters im Handbuch lautet: Wenn der optionale raw_output auf TRUE gesetzt ist, wird der MD5-Nachrichtenauszug im rohen Binärformat mit einer Länge von 16 Bytes zurückgegeben.

Die Standard-Rückgabewertdefinition der MD5-Funktion lautet: Geben Sie den Hash-Wert in Form einer 32-stelligen Hexadezimalzahl zurück.

Mit anderen Worten, wir verwenden normalerweise md5, um eine 32 Byte lange Hexadezimalzahl zurückzugeben. Wenn der zweite Parameter auf true gesetzt ist, geben wir ein ursprüngliches Binärformat mit 16 Byte Länge zurück. Obwohl es etwas kompliziert ist, ist es offensichtlich, dass die beiden Rückgabeformate völlig unterschiedlich sind, was zur Erzeugung verstümmelter Zeichen führt.

Die eine besteht darin, den 16-Byte-Originalcode im Binärformat in ein Hexadezimalformat umzuwandeln, die andere besteht darin, ihn abzufangen, da das 8. bis 24. und 16. Bit des 32-Bit-MD5-Codes Bit-MD5-Zeichenfolgen sind sind gleich.

Anbei ist der zweite Lösungscode:

$code = substr(md5($str),8,16);//$code是16位的md5码。

Empfohlenes Lernen: „PHP-Video-Tutorial

Das obige ist der detaillierte Inhalt vonSo lösen Sie das Problem verstümmelter Zeichen, wenn PHP MD5 16 Bit generiert. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn