MC, 16:48 sobota, 15.09.2012 r.
Ilustracja do artykułu: SQL Server - HashBytes() i konwertowanie MD5 z VARBINARY do VARCHAR

SQL Server - HashBytes() i konwertowanie MD5 z VARBINARY do VARCHAR

SQL Server jest wyposażony w funkcję HashBytes() która potrafi obliczać hashe różnymi algorytmami, w tym MD5. Problematyczny może okazać się typ zwracanych danych, ponieważ jest to VARBINARY a nie VARCHAR, jak by się niejednokrotnie tego chciało. Wpis ten pokaże nam jak w prosty sposób przekonwertować hash MD5 z typu binarnego do stringa.

Jak otrzymać kod MD5 w formacie VARCHAR?

Po pierwsze, niestety zwykłe rzutowanie typu VARBINARY na VARCHAR nie przyniesie pożądanego efektu. Dlatego trzeba ugryźć to z innej strony, a taką możliwość daje nam funkcja master.dbo.fn_varbintohexstr(), zapewniająca nam odpowiednią konwersję. Na tym co prawda jeszcze nie koniec, bo trzeba będzie jeszcze dodatkowo wyciąć niepotrzebne trzy pierwsze znaki zwróconego stringa, ale i tak całość sprowadza się do dość prostego zapytania:
SELECT SUBSTRING(master.dbo.fn_varbintohexstr(HashBytes('MD5', 'Dowolny tekst do zaszyfrowania')), 3, 32);
Warto sobie zachować powyższy fragment przykładowego kodu, bo może ono znacznie zaoszczędzić nerwów, gdy zmuszeni będziemy zahashować pewne dane po stronie serwera SQL.

Komentarze (0) - Nikt jeszcze nie komentował - bądź pierwszy!

Imię:
Treść: