11
votes

SHA256 dans la procédure stockée T-SQL

est-il possible de générer un hachage SHA-256 d'une chaîne d'une procédure stockée dans SQL Server 2008?

Pour des raisons de déploiement, je préférerais cela dans TSQL.


0 commentaires

3 Réponses :


23
votes

mise à jour forte>: SQL Server 2012 Hashbytes () prend en charge la SHA-256 et SHA-512 hors de la boîte.

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

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


4 commentaires

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


Cela va être considérablement plus difficile à écrire et moins bien performer moins bien dans SQL ...


Juste un FYI, SQL 2012 Ajout de la prise en charge de SHA-256. Vous venez de passer Sha_256 comme algorithme.


Le lien TSQL n'est plus utilisable; Il a un accès restreint sans toute façon pour enregistrer de nouveaux comptes d'utilisateurs. SQLBLOG.com/msgs/default.aspx?MessageID=29 Cependant, vous pouvez Trouvez l'article original sur web.archive.org/web/20171003225612/http://sqlblog.com:80/blo gs / ...



0
votes

Cela doit-il être SHA-256. Il y a une fonction SQL hashbytes () qui peut faire SHA, SHA1, MD5, etc.

(bien sûr, cela dépend de si vous voulez simplement une représentation de hachage d'une valeur ou de stocker de manière sécurisable des données précieuses.)


2 commentaires

Ajouté au cas où (comme moi) Je cherchais une fonction de hachage native dans SQL Server et surviennent à cette question. Cela impliquerait que CLR est le seul moyen de fournir une fonction de hachage.


Exemple de CLR: Stackoverflow.com/questions/12416249/... < / a>



4
votes

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

Vous pouvez faire si vous utilisez FnenCryptSha.dll !! P>

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 commentaires

Où pouvez-vous trouver cette DLL?


Je n'ai pas réalisé que vous pouviez appeler une .dll si facilement via SQL Server. Vous pouvez également jeter 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.