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

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

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

Ответ 1

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

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

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

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

Ответ 2

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)

Ответ 3

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

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