49

我不小心在存储密码之前停止了哈希密码,所以现在我的数据库混合了 MD5 密码和未哈希密码。

我想遍历并散列那些不是 MD5 的。是否可以检查字符串是否为 MD5 哈希?

4

2 回答 2

110

您可以使用以下功能进行检查:

function isValidMd5($md5 ='')
{
    return preg_match('/^[a-f0-9]{32}$/', $md5);
}

echo isValidMd5('5d41402abc4b2a76b9719d911017c592');

MD5(消息摘要算法)哈希通常以文本格式表示为 32 位十六进制数。

该函数检查:

  1. 它只包含字母和数字(af,0-9)。
  2. 它有 32 个字符长。
于 2013-01-13T04:37:19.333 回答
40

也许更快一点:

function isValidMd5($md5 ='') {
  return strlen($md5) == 32 && ctype_xdigit($md5);
}
于 2014-03-10T16:23:00.610 回答