php md5 16비트 문자 왜곡 문자에 대한 해결 방법: 1. 출력 16바이트 바이너리를 16진수로 변환합니다. 2. "substr(md5($str),8,16)" 방법을 통해 문자의 md5 암호문을 구합니다. .
권장: "PHP 비디오 튜토리얼"
garbled code
PHP의 md5 함수는 문자열 매개변수에 대해 md5 작업을 수행하는 데 사용됩니다. 이 함수에는 두 개의 매개변수가 있습니다:
md5 ( string $str [, bool $raw_output = FALSE ] ): string
md5 ( string $str [, bool $raw_output = FALSE ] ) : string
第一个参数是输入字符串;第二个参数默认为FALSE,设置为TRUE时可以输出16位的md5值。
默认情况下,
md5(string $str)
会返回:32 字符、十六进制数字形式的散列值。
如果加上第二个参数md5(string $str,TRUE)
则返回:16字节长度的原始二进制格式的散列值。
由此我们看出,当返回16字节长度(对应16个字符,因为符合ASCII)的二进制格式时,由于浏览器对其进行了字符化处理,由此就会产生乱码:
$str = "PHP"; echo "字符串:".$str."<br>"; echo "TRUE - 原始 16 字符二进制格式:".md5($str,TRUE)."<br>"; echo "FALSE - 32 字符十六进制格式:".md5($str)."<br>";
解决
那么如何得到不乱码的16位md5值呢?有两种方法:
substr(md5($str),8,16)
기본적으로 md5(string $str)
는 32자의 16진수 해시 값을 반환합니다.
두 번째 매개변수 md5(string $str,TRUE)
가 추가되면 길이가 16바이트인 원시 바이너리 형식의 해시 값이 반환됩니다.
이로부터 우리는 16바이트 길이(ASCII를 따르기 때문에 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>";
substr(md5($str),8,16)
을 가로채서 16자 md5 암호문을 얻을 수 있습니다. 두 번째 매개변수와 세 번째 매개변수는 8번째 문자(아래 첨자는 0부터 시작)부터 시작하여 16자를 나타냅니다. 🎜🎜🎜여기서는 문자 깨짐 문제를 해결하기 위해 두 번째 방법을 사용합니다. 여전히 위의 예를 사용합니다. 🎜rrreee🎜🎜🎜🎜🎜참고: 대문자 md5 값이 필요한 경우 strtoupper(...) 함수를 직접 사용하세요. 🎜🎜위 내용은 PHP md5 함수의 16비트 문자 왜곡 문제를 해결하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!