Можно ли рассчитать хеш MD5 непосредственно на языке T-SQL? - PullRequest
8 голосов
/ 26 мая 2009

Мне нужно хешировать (MD5) весь пароль в нашей базе данных Sql Server 2000. Я могу легко сгенерировать программу на C # / VB.NET для преобразования (хэширования) всех паролей, но мне было интересно (больше для моего образования, чем для насущной необходимости), можно ли рассчитать хеш MD5 непосредственно в T-SQL.
Спасибо всем, кто ответит.

Ответы [ 6 ]

7 голосов
/ 26 мая 2009

В 2005 году и позже вы можете вызвать функцию HashBytes () . В 2000 году самым близким был pwdencrypt / pwdcompare , хотя у этих функций есть свои подводные камни (см. Комментарии по ссылке).

4 голосов
/ 26 мая 2009

Используется этот код, но он не является родным для языка.

http://www.codeproject.com/KB/database/xp_md5.aspx

2 голосов
/ 26 мая 2009

Нет, в SQL Server 2000 нет собственной команды TSQL для генерации хэшей MD5.

В 2005 и выше вы можете использовать функцию HashBytes: http://msdn.microsoft.com/en-us/library/ms174415.aspx

1 голос
/ 01 ноября 2011

Пожалуйста, смотрите ниже пример / решение с использованием 2008

DECLARE @HashThis nvarchar(4000);
SELECT @HashThis = CONVERT(nvarchar(4000),'dslfdkjLK85kldhnv$n000#knf');
SELECT HashBytes('md5', @HashThis);
GO
0 голосов
/ 21 февраля 2012

Только для записи:

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) ) 
0 голосов
/ 26 мая 2009

В md5 нет ничего волшебного, вы можете реализовать его как чистую функцию tsql, если хотите. Я не уверен, что в tsql было бы весело, но ничто не мешает вам сделать это:)

...