>  기사  >  백엔드 개발  >  PHP md5가 16비트를 생성할 때 문자가 깨지는 문제를 해결하는 방법

PHP md5가 16비트를 생성할 때 문자가 깨지는 문제를 해결하는 방법

藏色散人
藏色散人원래의
2021-05-28 09:15:443313검색

php md5의 16비트 잘못된 문자에 대한 해결 방법: 1. 16바이트 원본 이진 형식 코드를 16진수로 변환합니다. 2. "substr(md5($str),8,16);"을 가로채는 방법 왜곡된 문자 문제를 해결합니다.

PHP md5가 16비트를 생성할 때 문자가 깨지는 문제를 해결하는 방법

이 문서의 운영 환경: Windows 7 시스템, PHP 버전 7.1, DELL G3 컴퓨터

php는 md5 함수를 사용하여 16비트 md5 값을 생성하고 잘못된 이유와 솔루션을 반환합니다.

나는 항상 32비트 md5 코드를 사용했는데, 최근 16비트 md5 코드를 사용하라는 요구가 있었습니다. 공식 PHP 매뉴얼을 확인하고 다음 방법을 사용하여 md5 코드를 생성했지만 결과적으로 코드가 깨졌습니다.

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

설명서를 다시 자세히 살펴보니 설명서의 두 번째 매개변수에 대한 설명이 나와 있습니다. 선택 사항인 raw_output이 TRUE로 설정된 경우 MD5 메시지 다이제스트는 길이가 16바이트인 원시 바이너리 형식으로 반환됩니다.

md5 함수의 기본 반환 값 정의는 다음과 같습니다. 32자의 16진수 형식으로 해시 값을 반환합니다.

즉, 일반적으로 md5를 사용하여 32바이트 길이의 16진수 숫자를 반환합니다. 두 번째 매개변수를 true로 설정하면 16바이트 길이의 원래 이진 형식을 반환합니다. 다소 복잡하기는 하지만 두 반환 형식이 완전히 다르기 때문에 문자가 깨질 수 있다는 점은 분명합니다.

두 가지 해결책이 있습니다. 하나는 16바이트 원래 이진 형식 코드를 16진수로 변환하는 것이고, 다른 하나는 값 비트 md5 코드의 8~24번째 및 16번째 비트를 가로채는 것입니다. 동일합니다.

두 번째 솔루션 코드가 첨부되어 있습니다:

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

추천 학습: "PHP Video Tutorial"

위 내용은 PHP md5가 16비트를 생성할 때 문자가 깨지는 문제를 해결하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.