PHP md5函数 的16位字符乱码问题解决
乱码
PHP的md5函数用于对字符串参数进行md5运算,该函数有两个参数:
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值呢?有两种方法:
- 对输出的16字节的二进制转化为十六进制;
- md5的密文中,16位密文与32位密文的第8-24位子字符串是一样的,所以我们就可以通过截取的方式:
substr(md5($str),8,16)
来获得16个字符的md5密文了。其中第二个参数和第三个参数代表从第8个字符开始(下标从0开始),取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(…)函数即可。
作者:doctorrm
链接:PHP md5函数 的16位字符乱码问题解决
来源:编程日志
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Flask 教程 第十章:邮件支持
本文转载自:https://www.jianshu.com/p/277c981e5c94 这是Flask Mega-Tutorial系列的第十部分,在其中我将告诉你,应用如何向你的用户发送电子邮件,以及如何在电子邮件支持之上构建密码重置功能。 现在,应用在数据库方面做得相当不错,所以在本章中,我想抛开这个主题,开始添加发送电子邮件的功能,这是大多数Web应用必需的另一个重要部分。 为什么应用需要发送电子邮件给用户? 原因很多,但其中一个常见的原因是解决与认证相关的问题。 在本章中,我将为忘记密码的用户添加密码重置功能。 当用户请求重置密码时,应用将发送包含特制链接的电子邮件。 用户然后需要点击该链接才能访问设置新密码的表单。 本章的GitHub链接为:Browse,Zip,Diff. Flask-Mail简介 就实际的邮件发送而言,Flask有一个名为Flask-Mail的流行插件,可以使任务变得非常简单。 和往常一样,该插件是用pip安装的: (venv) $ pip install flask-mail 密码重置链接将包含有一个安全令牌。 为了生成这些令牌,我将使用JSON Web...
- 下一篇
Flask 教程 第十一章:美化
本文转载自:https://www.jianshu.com/p/2c3305d75bf4 这是Flask Mega-Tutorial系列的第十一部分,我将告诉你如何用基于Bootstrap用户界面框架的新模板替换基础的HTML模板。 你把玩Microblog应用也有一段时间了,所以我相信你已经注意到,我没有花太多时间来美化它,说得更具体点,我根本没有花时间。 所有的模板只使用了基础样式,没有任何自定义的展现。 这对于我来说却非常有用,因为我可以专注于应用的实际逻辑,不用分心于编写好看的HTML和CSS代码。 但是我已经长期关注应用的后端部分一段时间了。 因此在本章中,我暂停一下后端的工作,并花点时间向你展示如何使应用看起来更加优雅和专业。 本章将与之前的章节略有不同,因为我不会像平常解说Python那样,事无巨细,一一道来,毕竟Python才是本教程的主要内容。 创建漂亮的网页是一个很广泛的话题,而与Python Web的后端开发很大程度上无关,因此我将讨论一些基本的指导方针和想法,你可以通过重新设计应用的外观来研究和学习它。 本章的GitHub链接为:Browse,Zip,Diff....
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS8编译安装MySQL8.0.19
- CentOS7,8上快速安装Gitea,搭建Git服务器
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- CentOS关闭SELinux安全模块
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- CentOS8安装Docker,最新的服务器搭配容器使用
- CentOS7,CentOS8安装Elasticsearch6.8.6
- Red5直播服务器,属于Java语言的直播服务器