SHA256 в хранимой процедуре T-sql

Можно ли сгенерировать хэш SHA-256 строки из хранимой процедуры в Sql Server 2008?

По причинам развертывания я бы предпочел его в TSQL.


person WOPR    schedule 02.06.2010    source источник


Ответы (3)


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

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

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

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

Вот реальный пример, в котором просто используются типы .NET Framework: Давайте хешируем BLOB

person Mitch Wheat    schedule 02.06.2010
comment
Привет, Митч, спасибо за это. По причинам развертывания я бы предпочел его в TSQL. Я уточню. - person WOPR; 02.06.2010
comment
Будет значительно сложнее писать и хуже работать в TSQL... - person Mitch Wheat; 02.06.2010
comment
К вашему сведению, в SQL 2012 добавлена ​​поддержка SHA-256. Вы просто передаете SHA_256 в качестве алгоритма. - person Oppositional; 20.02.2013
comment
Ссылка TSQL больше не используется; он имеет ограниченный доступ без регистрации новых учетных записей пользователей. sqlblog.com/Msgs/default.aspx?MessageID=29 Однако вы можете найдите исходную статью по адресу http://web.archive.org/web/20171003225612/http://sqlblog.com:80/blogs/michael_coles/archive/2009/04/16/13253.aspx - person Akbari; 26.04.2018

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)
person inno    schedule 08.10.2013
comment
Где найти эту DLL? - person tigeryan; 07.10.2015
comment
Я не знал, что вы можете так легко вызвать .dll через SQL Server. Вы также можете просто добавить свой собственный метод хеширования SHA-256 в class/.dll и вызвать его через SQL. Очень круто, спасибо за ответ. - person clamum; 27.01.2017

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

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

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