如何解决php md5生成16位出现乱码问题

藏色散人
Freigeben: 2023-03-10 06:48:01
Original
3168 人浏览过

php md5出现16位乱码的解决办法:1、将16字节的原始二进制格式码转为十六进制;2、采取“substr(md5($str),8,16);”截取的办法解决乱码问题。

如何解决php md5生成16位出现乱码问题

本文操作环境:Windows7系统、PHP7.1版,DELL G3电脑

php使用md5函数生成16位md5值返回乱码的原因以及解决方法

一直以来都是使用32位的md5码,最近有个需求是要用16位md5码,查了php官方手册,采用如下方式生成md5码,结果却返回乱码。

$code = md5($str,true);//$code是乱码
Nach dem Login kopieren

又仔细的看了眼手册,手册中关于第二个参数的描述是:如果可选的 raw_output 被设置为 TRUE,那么 MD5 报文摘要将以16字节长度的原始二进制格式返回。

而对于md5函数的默认返回值定义是:以32字符十六进制数字形式返回散列值。

也就是说,我们平时使用md5返回的是32字节长度的十六进制数字形式,如果第二个参数设置为true返回的是16字节长度的原始二进制格式。虽然有点绕口,但很显然两种返回格式是完全不同的,因此也就导致了乱码的产生。

解决方法有两种,一是将这个16字节的原始二进制格式码转为十六进制;二是采取截取的办法,因为一个值的32位md5码的第8到24位和16位md5的字符串是一样的。

附解决方法二代码:

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

推荐学习:《PHP视频教程

以上是如何解决php md5生成16位出现乱码问题的详细内容。更多信息请关注PHP中文网其他相关文章!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!