Je ne veux pas calculer la somme de contrôle d'un fichier, juste pour savoir si une chaîne donnée est une somme de contrôle valideComment puis-je vérifier si une chaîne est un md5 valide ou une chaîne somme de contrôle SHA1
Répondre
vérificateur SHA1:
public boolean isValidSHA1(String s) {
return s.matches("[a-fA-F0-9]{40}");
}
vérificateur MD5:
public boolean isValidMD5(String s) {
return s.matches("[a-fA-F0-9]{32}");
}
Toute séquence de 160 bits est un hachage SHA1 possible. Toute séquence de 128 bits est un hachage MD5 possible. Si vous regardez les représentations de chaînes hexadécimales, alors un sha1 ressemblera à 40 chiffres hexadécimaux, et un md5 ressemblera à 32 chiffres hexadécimaux.
Vérifiez donc un nombre hexadécimal de 40 chiffres et 32 chiffres respectivement – cobbal
Ha; vous avez ajouté votre commentaire pendant que j'étais en train d'éditer. +1 –
Cette réponse est meilleure car elle explique pourquoi. –
vérificateur MD5:
public boolean isValidMD5(String s) {
return s.matches("[a-fA-F0-9]{32}");}
Et enlever "-" de la valeur de chaîne.
Est-il étrange et merveilleux que dfa devrait fournir quelques DFA? –
non, ce n'est pas :-) – dfa
La regexp dans la réponse valide les chaînes avec une longueur de chaîne supérieure à 40 caractères, cela devrait le corriger: '^ [a-fA-F0-9] {40} $' – michaeltintiuc