web-dev-qa-db-fra.com

Vérifiez si la chaîne est un hachage MD5

J'ai accidentellement arrêté de hacher les mots de passe avant qu'ils ne soient stockés, alors maintenant ma base de données a un mélange de mots de passe MD5 et de mots de passe non hachés.

Je veux parcourir et hacher ceux qui ne sont pas MD5. Est-il possible de vérifier si une chaîne est un hachage MD5?

41
kmoney12

Vous pouvez vérifier en utilisant la fonction suivante:

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

echo isValidMd5('5d41402abc4b2a76b9719d911017c592');

Le hachage MD5 (algorithme de résumé de message) est généralement exprimé au format texte sous la forme d'un nombre hexadécimal à 32 chiffres.

Cette fonction vérifie que:

  1. Il ne contient que des lettres et des chiffres (a-z, 0-9).
  2. Il fait 32 caractères.
93
NullPoiиteя

Peut-être un peu plus vite:

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