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?
Odpowiedz
Używa tego kodu, ale nie jest natywny dla tego języka.
Dziękuję bardzo. Miałem nadzieję znaleźć sposób, aby zrobić to bezpośrednio za pomocą instrukcji SQL, ale to też jest dobre! –
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).
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. –
Nie, nie ma natywnej polecenie TSQL wygenerować MD5 hash jest w SQL Server 2000.
W 2005 i powyżej można użyć HashBytes
funkcję: http://msdn.microsoft.com/en-us/library/ms174415.aspx
Mimo że wybrałem inną odpowiedź, w każdym razie chciałbym bardzo podziękować za odpowiedź. –
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 :)
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
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, dla wersji po SQL Server 2000: http://stackoverflow.com/q/3525997/1569 –