# 推奨: 「php md5 16 ビット文字化けの解決策: 1. 出力された 16 バイトのバイナリを 16 進数に変換します; 2. "substr(md5($str),8,16)" メソッドを使用して 16-文字MD5暗号文。
PHP ビデオ チュートリアル 」
#文字化けPHP の md5 関数は、文字列パラメーターに対して md5 操作を実行するために使用されます。この関数には 2 つのパラメーターがあります:
md5 ( string $str [, bool $raw_output = FALSE ] ) : stringデフォルトでは、最初のパラメータは入力文字列です。2 番目のパラメータのデフォルトは FALSE です。TRUE に設定すると、16 ビットの md5 値を出力できます。
md5(string $str)は 32 文字の 16 進数のハッシュ値を返します。
このことから、16 バイト長のバイナリ形式 (ASCII に準拠しているため 16 文字に相当) が返されると、ブラウザがそれを特徴付けるため、文字化けが発生することがわかります。 :2 番目のパラメータ
md5(string $str,TRUE)
を追加すると、長さが 16 バイトの元のバイナリ形式のハッシュ値が返されます。
$str = "PHP"; echo "字符串:".$str."<br>"; echo "TRUE - 原始 16 字符二进制格式:".md5($str,TRUE)."<br>"; echo "FALSE - 32 字符十六进制格式:".md5($str)."<br>";解決策
それでは、文字化けしない 16 ビットの md5 値を取得するにはどうすればよいでしょうか?
出力された16バイトバイナリを16進数に変換する方法
$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>";注: 大文字の md5 値が必要な場合は、strtoupper(...) 関数を直接使用してください。
以上がPHP md5関数の16ビット文字化け問題の解決方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。