117 votes

Générer une chaîne de hachage MD5 avec T-SQL

Existe-t-il un moyen de générer une chaîne de hachage MD5 de type varchar(32) sans utiliser fn_varbintohexstr

SUBSTRING(master.dbo.fn_varbintohexstr(HashBytes('MD5', 'email@dot.com')), 3, 32)

Ainsi, il pourrait être utilisé à l'intérieur d'une vue avec SCHEMABINDING

224voto

Konstantin Tarkus Points 16862
CONVERT(VARCHAR(32), HashBytes('MD5', 'email@dot.com'), 2)

74voto

SQLMenace Points 68670

Utiliser HashBytes

SELECT HashBytes('MD5', 'email@dot.com')

Cela vous donnera 0xF53BD08920E5D25809DF2563EF9C52B6

-

SELECT CONVERT(NVARCHAR(32),HashBytes('MD5', 'email@dot.com'),2)

Cela vous donnera F53BD08920E5D25809DF2563EF9C52B6

20voto

Dellas Points 91

Solution :

SUBSTRING(sys.fn_sqlvarbasetostr(HASHBYTES('MD5','your text')),3,32)

18voto

jmacinnes Points 1191

Aucune des autres réponses n'a fonctionné pour moi. Notez que SQL Server donnera des résultats différents si vous passez dans une chaîne codée en dur par rapport à une colonne dans votre jeu de résultats. Ci-dessous est la magie qui a fonctionné pour moi pour donner une correspondance parfaite entre SQL Server et MySql

select LOWER(CONVERT(VARCHAR(32), HashBytes('MD5', CONVERT(varchar, EmailAddress)), 2)) from ...

14voto

slartidan Points 717

Pour les données jusqu'à 8000 caractères, utilisez :

CONVERT(VARCHAR(32), HashBytes('MD5', 'email@dot.com'), 2)

Démo

Pour les données binaires (sans la limite de 8000 octets), utilisez :

CONVERT(VARCHAR(32), master.sys.fn_repl_hash_binary(@binary_data), 2)

Démo

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X