题
是否可以从SQL Server 2008中的存储过程中生成一个字符串的SHA-256哈希?
出于部署原因,我更喜欢在TSQL中。
解决方案
更新: :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框架类型: 让我们放一个斑点
其他提示
sha256,SQL Server 2008或SQL Server 2005中的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)
是否必须是SHA-256。有一个SQL HASHBYTES()
可以执行SHA,SHA1,MD5等的功能
(当然,这取决于您是否只需要对值的哈希表示或安全存储有价值的数据。)
不隶属于 StackOverflow