2015-12-09 2 views
3

J'utilise le cryptage sha1 pour crypter mon mot de passe, mais je suis confronté à un problème avec cela. Pour certains utilisateurs, la connexion ne fonctionne pas.sha1 ne fonctionne pas dans le cryptage de mot de passe

mon code, (en inscription)

// all validation is done here 
$password = sha1($_POST['password']); 

// inserting data is here 

Login ma requête est

$email  = $_POST['email']; 
$password = sha1($_POST['password']); 

select * from users where email = $email and password = $password and status = 1 and deleted = 0; 

l'un des problèmes face à l'utilisateur par mot de passe,

im $$ homme

Est-ce que je fais quelque chose de mal?

aidez-moi s'il vous plaît.

+0

Je suppose que vous devriez avoir un problème avec tous les utilisateurs au lieu d'un pour ce code car ce code ne doit pas sha1 à '$ _POST ['mot de passe']' avant de sélectionner la requête. Donc idéalement aucun de vos utilisateurs ne devrait satisfaire par les résultats de la requête. –

+0

j'ai oublié d'ajouter là-bas ... mais il ne fonctionne pas pour seulement quelques utilisateurs ... –

Répondre

0

Eh bien, le problème est ici,

SHA1 traite $man en im$$man aussi variable, donc il sera évalué comme nul puisque vous n'avez pas de valeur pour cela.

quelque chose comme ça,

sha1("im$$man");// will echo 17cf5ec2752a9a7f0077c904f60b64f23ba2534d 

est aussi égal à

sha1("im$");// will echo 17cf5ec2752a9a7f0077c904f60b64f23ba2534d 
$man is evaluated to null. 

sortie est identique pour les deux l'entrée (entrée est différente si)

Pour obtenir le résultat attendu, éviter guillemets doubles,

sha1('im$$man');// this will give correct output 

sortie est

850caa44549443778fe005f466766d5d6d413692// correct output. 

problème similaire avec md5() here

+0

en fait im directement en prenant la valeur de $ _POST. –

+0

Raison pour downvote ?? –

+0

merci monsieur ... problème était dans la génération de mot de passe avec double $.Im générant le mot de passe sur le mot de passe oublié. Là si je reçois 2 $, je reçois ce problème. Merci beaucoup sir.i vu une réponse de plus aussi. vous êtes génial, merci monsieur ... –

6

J'utilise le chiffrement SHA1 pour chiffrer mon mot de passe,

Non. SHA1 n'est pas un cryptage, c'est une fonction de hachage. Understanding the difference between encrypting and hashing est cruciale pour la mise en œuvre de cette sécurité:

De plus, la façon dont vous avez écrit votre requête me porte à croire qu'il est vulnérable à SQL injection .

+0

Cet article sur Adobe était une bonne lecture, même si elle date de quelques années. Heureusement que je n'ai jamais été client d'Adobe! – Mike