2010-06-02 6 views

Répondre

20

Mise à jour: SQL Server 2012 HASHBYTES() prend désormais en charge SHA-256 et SHA-512 prêt à l'emploi.

HASHBYTES ('<algorithm>', { @input | 'input' }) 

<algorithm>::= MD2 | MD4 | MD5 | SHA | SHA1 | SHA2_256 | SHA2_512 

Bien sûr. Vous pouvez le faire en TSQL, mais il sera beaucoup plus facile de l'implémenter en tant que CLR Stored procedure.

Voici un exemple réel, qui utilise simplement les types de .NET Framework: Let's Hash a BLOB

+1

Salut Mitch merci pour cela. Pour des raisons de déploiement, je préférerais ça dans TSQL. Je vais clarifier. – WOPR

+0

Il va être beaucoup plus difficile d'écrire et moins performant moins bien dans TSQL ... –

+1

Juste un FYI, SQL 2012 a ajouté le support pour SHA-256. Vous venez de passer SHA_256 comme l'algorithme. – Oppositional

0

-t-il d'être SHA-256. Il y a une fonction SQL HASHBYTES() qui peut faire SHA, SHA1, MD5 etc.

(Bien sûr, cela dépend si vous voulez juste une représentation de hachage d'une valeur, ou de stocker en toute sécurité des données précieuses.)

+0

Ajouté dans le cas (comme moi) je cherchais une fonction native HASH dans le serveur SQL et ils rencontrent cette question. Cela impliquerait que le CLR est le seul moyen de fournir une fonction HASH. – Guy

+0

Exemple CLR: http://stackoverflow.com/questions/12416249/hashing-a-string-with-sha256 –

4

SHA256, SHA512 dans SQL Server 2008 ou SQL Server 2005!

Vous pouvez le faire si vous utilisez 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

Où pouvez-vous trouver cette DLL? – tigeryan

+0

Vous pouvez l'obtenir ici: http://www.innoya.com/Tools/fnEnCryptSHA.aspx – chrilith

+0

Je ne savais pas que vous pourriez appeler un .dll si facilement via SQL Server. Vous pouvez également lancer votre propre méthode de hachage SHA-256 dans une classe/.dll et l'appeler via SQL. Très cool, merci pour la réponse. – clamum

Questions connexes