PHP无法忽视的md5加密漏洞

我们先看一段代码: 

<?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(需要加密的字符串))

猜你喜欢

转载自blog.csdn.net/weixin_41635750/article/details/108067683
今日推荐