SHA256 в хранимой процедуре T-sql - PullRequest
11 голосов
/ 02 июня 2010

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

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

Ответы [ 3 ]

22 голосов
/ 02 июня 2010

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

* +1007 *

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

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

4 голосов
/ 08 октября 2013

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 голосов
/ 13 мая 2011

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

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

...