2013-03-30 4 views
0
insert into test(username,pwd) values('Jim',ENCODE('123456','Jim')); 
select username from test where username='Jim' and pwd=ENCODE('123456','Jim') 

insert into test(username,pwd) values('Ryan',SHA('123456')) 
select username from test where username='Ryan' and pwd=SHA('123456') 

insert into test(username,pwd) values('Jack',MD5('123456')) 
select username from test where username='Jack' and pwd=MD5('123456') 

Pourquoi je ne peux pas obtenir un bon résultat en utilisant SHA et MD5? Les mots de passe sont tous les deux 123456, mais avec des méthodes de chiffrement différentes je ne peux pas obtenir un bon résultat.mot de passe MySQL Crypter validation

Le premier peut produire "Jim" correctement. Mais le deuxième et le troisième ne peuvent pas sortir "Ryan" ou "Jack", l'ensemble de résultats est null. Pourquoi? Je veux savoir comment valider un utilisateur par mot de passe crypté.

+0

Il fonctionne pour moi – serans

+1

quel type de champ et la longueur est "passwd"? MD5 et SHA ne sont pas un cryptage mais plutôt un hachage - la différence est que vous pouvez inverser le cryptage, mais un hachage est à sens unique. Ce n'est pas un problème avec votre exemple mais j'ai pensé que je devrais le signaler. – Steve

+0

De plus, les balises "java" et "web" ne sont pas pertinentes à la question – serans

Répondre

1

Se pourrait-il que vous fassiez quelque chose de mal? Fonctionne bien pour moi.

SQL Fiddle link with the queries. Mon sentiment est que vous stockez des versions tronquées du hachage.

+0

Cela semble être le seul moyen d'échouer. – Xnoise

+0

Vous avez l'intuition droite. J'oublie de considérer la longueur ... – Ryan

1

Vous devez changer vos types de champs comme 20 caractères champ VARCHAR est tronquer les hash:

MD5 produit une chaîne de 32 caractères afin d'utiliser CHAR(32).

SHA produit une chaîne de 64 caractères, utilisez donc CHAR(64).

Vous devez toujours utiliser CHAR sur VARCHAR lorsque vous connaissez la longueur de l'entrée, pour des raisons de performances (SQL sait combien allouer).

Questions connexes