我们先看一段代码:
<?php
$str1 = 's878926199a';
$str2 = 's214587387a';
echo json_encode([
'md5_str1' => md5($str1),
'md5_str2' => md5($str2),
'bool' => md5($str1) == md5($str2)
]);
结果如下:
{
md5_str1: "0e545993274517709034328855841020",
md5_str2: "0e848240448830537924465865611904",
bool: true
}
-
我们发现竟然两个字符串 其实不相等,但是 md5 后的结果 却是相等 的
-
这是因为,当 md5 后加密的字符串,前面是 0e 的话,其实都是返回0
解决方法一:加盐值
<?php
md5(盐值 + 需要加密的字符串)
解决方法二:双重md5
<?php
md5(md5(需要加密的字符串))