11

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

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

4

3 回答 3

24

更新: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

于 2010-06-02T03:29:57.763 回答
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)
于 2013-10-08T09:07:58.117 回答
0

它必须是 SHA-256。有一个 SQLHASHBYTES()函数可以做 SHA、SHA1、MD5 等。

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

于 2011-05-13T12:15:50.923 回答