2009-05-26 9 views
8

Ho bisogno di hash (MD5) tutta la password nel nostro database Sql Server 2000. Posso facilmente generare un programma C#/VB.NET per convertire (hash) tutte le password, ma mi stavo chiedendo (più per la mia formazione che per una reale necessità impellente) se fosse possibile calcolare l'hash MD5 direttamente in T-SQL.
Grazie a chiunque risponda.È possibile calcolare l'hash MD5 direttamente nel linguaggio T-SQL?

+0

Correlato, per le versioni successive a SQL Server 2000: http://stackoverflow.com/q/3525997/1569 –

risposta

7

Nel 2005 e versioni successive, è possibile chiamare la funzione HashBytes(). Nel 2000, la cosa più vicina è pwdencrypt/pwdcompare, anche se queste funzioni hanno le proprie insidie ​​(leggi i commenti del collegamento).

+0

Grazie mille per la cortese risposta. Alla fine scelsi la risposta di Daniel perché stavo cercando l'hashing MD5, ma il tuo è stato molto vicino e il suggerimento su pwdencryt/pwdcompare mi ha fatto imparare qualcosa di veramente interessante. –

2

No, non esiste un comando nativo TSQL per generare MD5 di in SQL Server 2000.

Nel 2005 e sopra di voi hash possibile utilizzare la funzione HashBytes: http://msdn.microsoft.com/en-us/library/ms174415.aspx

+0

Anche se ho scelto un'altra risposta, ho comunque voluto ringraziarti per la tua risposta. –

0

Non c'è nulla di magico md5, si può implementalo come una pura funzione tsql se vuoi. Non sono sicuro che sarebbe stato divertente in TSQL, ma ci dovrebbe essere nulla impedisce di farlo :)

1

prega di vedere sotto esempio/soluzione che utilizza 2008

DECLARE @HashThis nvarchar(4000); 
SELECT @HashThis = CONVERT(nvarchar(4000),'dslfdkjLK85kldhnv$n000#knf'); 
SELECT HashBytes('md5', @HashThis); 
GO 
-1

Solo per la cronaca:

UPDATE T_WHATEVER_YOUR_TABLE_NAME_IS 
    SET PREFIX_Hash = LOWER(SUBSTRING(master.dbo.fn_varbintohexstr(HashBytes('MD5', LOWER('a-string-with-utf8-encoded-international-text'))), 3, 32)) 
Problemi correlati