PHP中为何md5($string)与$string不相等?
为什么md5('Taif')不等于'Taif'?
嘿,我来帮你理清楚这个问题!先看你写的代码:
<?php $name = 'Taif'; if (md5($name) == $name){ echo 'True'; } else{ echo 'False'; } ?>
输出False的原因其实很简单,核心在于md5()函数的工作机制:
md5()会对输入的字符串生成一个固定32位的十六进制哈希字符串,这是哈希函数的基本特性——不管输入内容长短,输出的哈希值长度都是固定的。- 你输入的
'Taif'是一个仅4个字符的短字符串,它的MD5计算结果是e148806c47d9943239a52e73d1a75570,这是一个32位的长字符串,和原字符串'Taif'在长度、内容上完全不匹配。 - 当你用
==对这两个完全不同的值做比较时,结果自然是不相等,所以代码会执行else分支,输出False。
如果想直观验证的话,你可以在代码里加一行打印MD5结果的语句:
<?php $name = 'Taif'; echo md5($name); // 输出 e148806c47d9943239a52e73d1a75570 if (md5($name) == $name){ echo 'True'; } else{ echo 'False'; } ?>
这样就能清楚看到两者的差异啦。
内容的提问来源于stack exchange,提问作者user9541474
相关产品推荐
相关产品推荐

