Мне нужно хешировать (MD5) весь пароль в нашей базе данных Sql Server 2000. Я могу легко сгенерировать программу на C # / VB.NET для преобразования (хэширования) всех паролей, но мне было интересно (больше для моего образования, чем для насущной необходимости), можно ли рассчитать хеш MD5 непосредственно в T-SQL. Спасибо всем, кто ответит.
В 2005 году и позже вы можете вызвать функцию HashBytes () . В 2000 году самым близким был pwdencrypt / pwdcompare , хотя у этих функций есть свои подводные камни (см. Комментарии по ссылке).
Используется этот код, но он не является родным для языка.
http://www.codeproject.com/KB/database/xp_md5.aspx
Нет, в SQL Server 2000 нет собственной команды TSQL для генерации хэшей MD5.
В 2005 и выше вы можете использовать функцию HashBytes: http://msdn.microsoft.com/en-us/library/ms174415.aspx
HashBytes
Пожалуйста, смотрите ниже пример / решение с использованием 2008
DECLARE @HashThis nvarchar(4000); SELECT @HashThis = CONVERT(nvarchar(4000),'dslfdkjLK85kldhnv$n000#knf'); SELECT HashBytes('md5', @HashThis); GO
Только для записи:
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) )
В md5 нет ничего волшебного, вы можете реализовать его как чистую функцию tsql, если хотите. Я не уверен, что в tsql было бы весело, но ничто не мешает вам сделать это:)