代码之家  ›  专栏  ›  技术社区  ›  WOPR

T-SQL存储过程中的sha256

  •  11
  • WOPR  · 技术社区  · 14 年前

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

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

    3 回复  |  直到 6 年前
        1
  •  21
  •   Mitch Wheat    6 年前

    更新 :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框架类型: Let's Hash a BLOB

        2
  •  4
  •   Baby Groot Duleendra    11 年前

    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)
    
        3
  •  0
  •   BenMorel Pankaj Kumar    11 年前

    必须是SHA-256吗?有一个SQL HASHBYTES() 可以执行sha、sha1、md5等功能。

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