2009-05-26 12 views
8

Potrzebuję hash (MD5) całe hasło w naszej bazie danych Sql Server 2000. Mogę łatwo wygenerować program C#/VB.NET do konwersji (hash) wszystkich haseł, ale zastanawiałem się (bardziej dla mojej edukacji niż dla prawdziwej nieodpartej potrzeby), czy możliwe było obliczenie skrótu MD5 bezpośrednio w T-SQL.
Dziękuję każdemu, kto odpowie.Czy można obliczyć skrót MD5 bezpośrednio w języku T-SQL?

+0

Powiązane, dla wersji po SQL Server 2000: http://stackoverflow.com/q/3525997/1569 –

Odpowiedz

7

w 2005 roku i później, można wywołać funkcję HashBytes(). W 2000 roku najbliżej jest pwdencrypt/pwdcompare, chociaż te funkcje mają swoje własne pułapki (przeczytaj komentarze do linku).

+0

Dziękuję bardzo za życzliwą odpowiedź. Na koniec wybieram odpowiedź Daniela, ponieważ szukałem skrótu MD5, ale twój był naprawdę blisko, a sugestia o pwdencryt/pwdcompare nauczyła mnie czegoś naprawdę interesującego. –

0

Nie ma nic magicznego md5, można zaimplementuj go jako czystą funkcję tsql, jeśli chcesz. Nie jestem pewien, czy to będzie zabawa w TSQL, ale nie powinno być nic uniemożliwia robi tak :)

1

proszę zobaczyć poniżej przykład/rozwiązania z wykorzystaniem 2008

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

Tak dla przypomnienia:

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)) 
Powiązane problemy