在T-sql存储过程中使用SHA256

时间:2010-06-02 03:21:33

标签: sql-server-2008 sha256

是否可以从Sql Server 2008中的存储过程生成字符串的SHA-256哈希?

出于部署原因,我更喜欢它在TSQL中。

3 个答案:

答案 0 :(得分:21)

更新: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 :(得分:4)

SQL Server 2008或SQL SERVER 2005中的SHA256,SHA512!

如果您使用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)

答案 2 :(得分:0)

是否必须是SHA-256。有一个SQL HASHBYTES()函数可以执行SHA,SHA1,MD5等。

(当然,这取决于你是想要一个值的哈希表示,还是安全存储有价值的数据。)