2008-10-08 5 views
28

Преобразование паролей хранимых процедур с MySQL на сервер Microsoft SQL. Все идет хорошо, за исключением одной процедуры, используемой функцией MySQL SHA1(). Я не могу найти эквивалент этого в MS-SQL.Есть ли эквивалент SHA1() в MS-SQL?

Кто-нибудь знает действительный эквивалент для SHA1() на MS-SQL?

+1

Если это для хранения паролей, я вынужден сказать, что простое хеширование необработанной строки в большинстве случаев недостаточно. Вот почему: http://www.md5decrypter.co.uk/sha1-decrypt.aspx ... среди многих других ... Там тонны радужных столов там, и вспять не соленый пароль довольно тривиально в эти дни, потому что из этого. – dodexahedron 2012-08-31 01:59:37

ответ

45

SQL Server 2005 и более поздние версии имеют функцию HashBytes().

+10

Выглядит отлично, ответил, когда я взял утечку. Мне нравится stackoverflow. Благодаря! – GEOCHET 2008-10-08 19:34:00

13

Если вы хотите получить хэш SHA1 точно так же, как MySQL сгенерировал его (например, как varchar), вы можете комбинировать HashBytes с sys.fn_varbintohexsubstring. Например.

SELECT sys.fn_varbintohexsubstring(0, HashBytes('SHA1', 'password'), 1, 0) 

Для получения более подробной информации см. http://accessrichard.blogspot.co.nz/2010/12/sql-server-and-net-equivalent-to-php.html.