Comment utiliser une valeur entière avec une requête SQL Server utilisant HashBytes

J'essaie de faire une requête sur une table de nom d'user où le nom d'user et le mot de passe correspondent. La table est une table préexistante (créée lors de l'installation du logiciel de l'entreprise) et je n'ai pas la possibilité de modifier les types ou methods de chiffrement. Une requête avec une string en tant que mot de passe fonctionne parfaitement mais lorsque j'essaie d'interroger en utilisant un entier, la requête renvoie null.

"SELECT * FROM ITF_USER WHERE ITF_LOGIN = '$lcUserName' AND ITF_PASS = HashBytes('SHA1', '$lcPassword')"; 

Si le mot de passe est quelque chose comme 'helloworld' alors la requête fonctionne bien, mais '1121321' ne renvoie rien. Aucune suggestion?

MISE À JOUR Si je compare la table stockée mot de passe avec les résultats sha1 de php ($ lcPassword), je vois une légère différence qui provoque les résultats de la requête nulle:

 table -> 0x3FEEAC0B3A75CF1C12A8420CDE593FA275CCE584 sha1()-> 8feeac0b3a75cf1c12a8420cde598fa275cce584 

il y a deux 8 dans les résultats sha1 () qui devraient être 3

J'ai essayé ceci:

 declare @vc varchar(255), @nvc nvarchar(255) set @vc = '1111' set @nvc = '1111' select hashbytes('sha1', @vc) select hashbytes('sha1', @nvc) 

Il a renvoyé des valeurs différentes:

 varchar = 0x011C945F30CE2CBAFC452F39840F025693339C42 nvarchar = 0x40C7BD210D05DBEA19402B952DD416E487450955 

Il semble que le type de données des seconds parameters fasse la différence lors de l'appel de HashBytes() . Peut-être qu'un varchar est passé lorsque vous utilisez une string et qu'un int est converti en nvarchar (ou vice-versa).

Cela pourrait fonctionner pour forcer tout à un type: HashBytes('SHA1', cast('$lcPassword' as varchar(255))