web-dev-qa-db-ja.com

文字列がMD5ハッシュかどうかを確認します

パスワードを保存する前に誤ってハッシュを停止したため、データベースにはMD5パスワードとハッシュされていないパスワードが混在しています。

MD5ではないものをループしてハッシュしたいです。文字列がMD5ハッシュかどうかを確認することは可能ですか?

41
kmoney12

次の機能を使用して確認できます。

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

echo isValidMd5('5d41402abc4b2a76b9719d911017c592');

MD5(Message-digest algorithm)ハッシュは通常、32桁の16進数としてテキスト形式で表されます。

この関数は以下をチェックします:

  1. 文字と数字(a〜z、0〜9)のみが含まれます。
  2. 長さは32文字です。
93
NullPoiиteя

少し速いかもしれません:

function isValidMd5($md5 ='') {
  return strlen($md5) == 32 && ctype_xdigit($md5);
}
32
RaphaelH