md5 i t-sql

Aby wyliczyć hash md5 w sql server korzystając z t-sql, powinniśmy zdefiniować prostą funkcję która nam to ułatwi. Jako że w większości przypadków posługujemy się hashem zapisanym jako 32 znaki w zapisie 16stkowym.

create FUNCTION genmd5
(
@inputstring varchar(max)
)
RETURNS varchar(32)
AS
BEGIN

return LOWER(CONVERT(VARCHAR(32), HashBytes('MD5', CONVERT(varchar, @inputstring )), 2))

END
GO

To co jest istotne w tej funkcji to linia:
return LOWER(CONVERT(VARCHAR(32), HashBytes('MD5', CONVERT(varchar, @inputstring )), 2))

wygląda ona dość skomplikowanie ze względu na konwersje. Należy się upewnić że ciąg wejściowy to varchar inaczej funkcja HashBytes może zwrócić inne wyniki (hashowanie odbywa się na poziomie bajtów a różne typy danych mogą mieć różne zapisy).
Jako że podobnie jak w .NET wynik ejst zwracany jako zapis bajtów należy go również zamienić na napis w odpowiedni sposób. Przyjęło się że hashe są przekazywane małymi literami.