Heim > Artikel > Backend-Entwicklung > So lösen Sie das Problem der verstümmelten 16-Bit-Zeichen der PHP MD5-Funktion
Lösung für verstümmelte PHP-MD5-16-Bit-Zeichen: 1. Konvertieren Sie die ausgegebenen 16-Byte-Binärzeichen in Hexadezimalzahlen. 2. Erhalten Sie 16 MD5-Chiffretexte mit der Methode „substr(md5($str),8,16)“. .
Empfohlen: „PHP-Video-Tutorial“
verstümmelter Code
PHPs MD5-Funktion wird verwendet, um MD5-Operationen an String-Parametern auszuführen. Die Funktion hat zwei Parameter:
md5 ( string $str [, bool $raw_output = FALSE ] ) : string
Der erste Parameter ist die Eingabezeichenfolge; der zweite Parameter ist standardmäßig FALSE. Wenn er auf TRUE gesetzt ist, kann ein 16-Bit-MD5-Wert ausgegeben werden.
Standardmäßig gibt
md5(string $str)
Folgendes zurück: einen 32-stelligen hexadezimalen Hashwert.
Wenn der zweite Parametermd5(string $str,TRUE)
hinzugefügt wird, wird Folgendes zurückgegeben: ein Hashwert im rohen Binärformat mit einer Länge von 16 Bytes.
Daraus können wir erkennen, dass bei der Rückgabe eines Binärformats mit einer Länge von 16 Byte (entsprechend 16 Zeichen, da es ASCII-konform ist) verstümmelte Zeichen generiert werden, da der Browser es charakterisiert:
$str = "PHP"; echo "字符串:".$str."<br>"; echo "TRUE - 原始 16 字符二进制格式:".md5($str,TRUE)."<br>"; echo "FALSE - 32 字符十六进制格式:".md5($str)."<br>";
Lösung
Wie erhält man also einen 16-Bit-MD5-Wert, der nicht verstümmelt ist? Es gibt zwei Methoden:
substr(md5($str),8,16)
. Der zweite Parameter und der dritte Parameter stellen ab dem 8. Zeichen dar (der Index beginnt bei 0) und nehmen 16 Zeichen ein. Hier verwenden wir die zweite Methode, um das Problem verstümmelter Zeichen zu lösen. Verwenden Sie immer noch das obige Beispiel:
$str = "PHP"; echo "字符串:".$str."<br>"; echo "TRUE - 原始 16 字符二进制格式(乱码):".md5($str,TRUE)."<br>"; echo "TRUE - 原始 16 字符二进制格式(不乱码):".substr(md5($str),8,16)."<br>"; echo "FALSE - 32 字符十六进制格式:".md5($str)."<br>";
Hinweis: Wenn Sie einen MD5-Wert in Großbuchstaben benötigen, verwenden Sie einfach direkt die Funktion strtoupper(...).
Das obige ist der detaillierte Inhalt vonSo lösen Sie das Problem der verstümmelten 16-Bit-Zeichen der PHP MD5-Funktion. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!