Bonsoir à tous,
je suis sur une méthode qui récupère des infos une fois que les identifiants de connexion sont corrects.
Je rencontre un problème de comparaison (à mon avis) entre le cryptage fait par c# lors de la récupération des infos et le cryptage fait par SQL lors de la création des identifiants de connexion
voici mon code :
SQL
C#
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 CREATE FUNCTION CryptagePasse (@mdp typeSmallString) RETURNS hasString AS BEGIN declare @hash nvarchar(4000); declare @HashThis nvarchar(4000); SELECT @HashThis = CONVERT(nvarchar(4000),@mdp); SELECT @hash = HASHBYTES('SHA1', @HashThis); RETURN @hash; END GO
je pense que c ne sera jamais null dans ce cas la mais la n'est pas le problème.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 public Carnet ConnexionCarnet(string login, string mdp) { byte[] hashMdp = System.Text.Encoding.ASCII.GetBytes(mdp); SHA1CryptoServiceProvider sha = new SHA1CryptoServiceProvider(); string hash = BitConverter.ToString(sha.ComputeHash(hashMdp)).Replace("-", ""); IQueryable<Carnet> c = from x in DbCarnet.Carnets where ((x.lLogin == login)&&(x.lMdp== hash)) select x; if (c != null) return c.ToList()[0]; else return null; }
J'ai fait un test en supprimant la partie du code qui concerne le mdp :
et à ce moment la, ça fonctionne.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 &&(x.lMdp== hash)
malgré que ce soit la même méthode de cryptage (SHA1), il y a un problème de comparaison que je n' arrive pas à résoudre ...
Si quelqu un peut me mettre sur la voie je suis preneur
merci d'avance
Partager