Vérifier si la chaîne est un Hachage MD5
Par accident, j'ai arrêté de hachage des mots de passe avant ils étaient stockés, alors maintenant ma base de données est un mélange de mots de passe MD5 et unhashed mots de passe.
Je veux faire une boucle par hachage et de ceux qui ne sont pas de MD5. Est-il possible de vérifier si une chaîne est un hachage MD5?
- NullPointer la réponse est votre meilleur coup, mais encore, vous ne pouvez pas être sûr, sauf si vous êtes déjà en permettant aux utilisateurs d'enregistrer un mot de passe qui peut être de 32 caractères de long.
- Hors sujet, mais MD5 est considéré comme "cassé" pour le stockage des mots de passe en raison de la facilité avec laquelle vous pouvez calculer toutes les clés possibles. Regardez: stackoverflow.com/questions/4795385/... et stackoverflow.com/questions/1581610/... et openwall.com/phpass
Vous devez vous connecter pour publier un commentaire.
Vous pouvez vérifier à l'aide de la fonction suivante:
Le MD5 (Message-digest algorithm) Hachage est généralement exprimé en format texte comme un 32 nombre de chiffres hexadécimaux.
Cette fonction vérifie que:
!empty
case est entièrement superflu là.preg_match()
ne correspond pas?false
. +vote @inhanReturns the hash as a 32-character hexadecimal number.
ce qui signifie que la valeur devrait être composé de0-9
eta-f
uniquement des caractères et il devrait être de 32 caractères de long.preg_match('/^[a-f0-9]{32}$/'
est en indiquant thata chaîne de 32 caractères ne peut contenir que des lettres de a à f (hex) et les chiffres de 0 à 9. Il ya quelques raisons pourquoi vous pouvez faire confiance à cela, et ne le peuvent pas. 1. MD5 est de 32 caractères de long, 2. MD5 ne contient que des minuscules caractères alphabétiques a à f). Quelqu'un peut faux un hachage MD5, il n'existe pas de méthode infaillible pour détecter si les textes, les informations, est d'une certaine source, sauf si vous allez dans des choses comme la connexion sécurisée cookies, etc..., qui est un sujet complètement différent.MD5()
appel ne comprennent pas le second paramètre qui peut être converti entrue
sinon, cette fonction ne sera pas vous aider. De vérifier laraw_output
(2) le paramètreMD5()
de documentation.Peut-être un peu plus rapide:
!ctype_digit($md5) && ctype_lower($md5) && ctype_alpha($md5)