2010-06-02 3 views

ответ

20

Обновление: SQL Server 2012 HASHBYTES() теперь поддерживает SHA-256 и SHA-512 из коробки.

HASHBYTES ('<algorithm>', { @input | 'input' }) 

<algorithm>::= MD2 | MD4 | MD5 | SHA | SHA1 | SHA2_256 | SHA2_512 

Конечно. Вы можете сделать это в TSQL, но будет намного проще реализовать его как CLR Stored procedure.

Вот конкретный пример, который просто использует типы .NET Framework: Let's Hash a BLOB

+1

Hi Mitch спасибо за это. По причинам развертывания я бы предпочел это в TSQL. Я уточню. – WOPR

+0

Это будет значительно сложнее писать и менее эффективно работать в TSQL ... –

+1

Просто FYI, SQL 2012 добавлена ​​поддержка SHA-256. Вы просто передаете SHA_256 в качестве алгоритма. – Oppositional

0

это ИМЕЮТ ли быть SHA-256. Существует SQL-HASHBYTES() функция, которая может сделать SHA, SHA1, MD5 и т.д.

(Конечно, это зависит от того, если вы просто хотите хэш-представление значения, или надежно хранить ценные данные.)

+0

Добавлено в случае (например, я) Я искал любую собственную функцию HASH на SQL-сервере, и они сталкиваются с этим вопросом. Это подразумевает, что CLR - единственный способ предоставить функцию HASH. – Guy

+0

CLR Пример: http://stackoverflow.com/questions/12416249/hashing-a-string-with-sha256 –

4

SHA256, SHA512 в SQL Server 2008 или SQL Server 2005!

Вы можете сделать, если используете fnEnCryptSHA.dll !!

USE [master] GO 
EXEC sp_configure 'clr enabled', 1 GO RECONFIGURE GO 

CREATE ASSEMBLY InnoDll FROM 'C:\sqltip\fnEnCryptSHA.dll' WITH PERMISSION_SET= SAFE GO 

CREATE FUNCTION dbo.fnGetStringToSha256 (@Str nvarchar(1000)) RETURNS varbinary(8000) AS EXTERNAL NAME InnoDll.fnEnCryptSHA.GetStringToSha256 GO 

CREATE FUNCTION dbo.fnGetBinaryToSha256 (@Str varbinary(8000)) RETURNS varbinary(8000) AS EXTERNAL NAME InnoDll.fnEnCryptSHA.GetBinaryToSha256 GO 

SELECT dbo.fnGetStringToSha256('abc') 

SELECT dbo.fnGetBinaryToSha256(0x9F04F41A848514162050E3D68C1A7ABB441DC2B5) 
+0

Где вы можете найти эту DLL? – tigeryan

+0

Вы можете получить его здесь: http://www.innoya.com/Tools/fnEnCryptSHA.aspx – chrilith

+0

Я не знал, что вы можете легко вызвать DLL через SQL Server. Вы также можете просто добавить свой собственный метод хэширования SHA-256 в класс/.dll и вызвать его через SQL. Очень круто, спасибо за ответ. – clamum

Смежные вопросы