Genera la stringa hash MD5 con T-SQL

C’è un modo per generare una stringa MD5 Hash di tipo varchar (32) senza usare fn_varbintohexstr

SUBSTRING(master.dbo.fn_varbintohexstr(HashBytes('MD5', '[email protected]')), 3, 32) 

Quindi potrebbe essere usato all’interno di una vista con SCHEMABINDING

 CONVERT(VARCHAR(32), HashBytes('MD5', '[email protected]'), 2) 

Usa HashBytes

 SELECT HashBytes('MD5', '[email protected]') 

Questo ti darà 0xF53BD08920E5D25809DF2563EF9C52B6

 SELECT CONVERT(NVARCHAR(32),HashBytes('MD5', '[email protected]'),2) 

Questo ti darà F53BD08920E5D25809DF2563EF9C52B6

Soluzione:

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

Nessuna delle altre risposte ha funzionato per me. Si noti che SQL Server fornirà risultati diversi se si passa una stringa hard-coded rispetto a una colonna nel set di risultati. Di seguito è la magia che ha funzionato per me per dare una perfetta corrispondenza tra SQL Server e MySql

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

Per i dati fino a 8000 caratteri utilizzare:

 CONVERT(VARCHAR(32), HashBytes('MD5', '[email protected]'), 2) 

Per i dati binari (senza limite di 8000 byte) utilizzare:

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

prova questo:

 select SUBSTRING(sys.fn_sqlvarbasetostr(HASHBYTES('MD5', '[email protected]' )),3,32) 

fonte: http://linesofcode.net/snippets/161