2010-06-02 19 views
10
संग्रहीत

यह Sql सर्वर 2008 में एक संग्रहीत प्रक्रिया से एक तार का एक SHA256 हैश उत्पन्न करने के लिए संभव है?SHA256 प्रक्रिया

तैनाती के कारणों के लिए, मैं इसे टीएसक्यूएल में पसंद करूंगा।

उत्तर

20

अद्यतन: SQL Server 2012 HASHBYTES() अब बॉक्स से बाहर SHA-256 और SHA-512 का समर्थन करता है।

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

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

ज़रूर। आप इसे टीएसक्यूएल में कर सकते हैं, लेकिन इसे CLR Stored procedure के रूप में कार्यान्वित करना बहुत आसान होगा।

यहाँ एक वास्तविक उदाहरण है, कि बस .नेट फ्रेमवर्क प्रकार का उपयोग करता है: Let's Hash a BLOB

+1

हाय मिच इसके लिए धन्यवाद। तैनाती के कारणों के लिए, मैं इसे टीएसक्यूएल में पसंद करूंगा। मैं स्पष्ट करूंगा। – WOPR

+0

यह लिखना काफी कठिन होगा और टीएसक्यूएल में कम अच्छा प्रदर्शन करेगा ... –

+1

बस एक एफवाईआई, एसक्यूएल 2012 ने एसएचए -256 के लिए समर्थन जोड़ा। आप बस एसएचआईआर 56 को एल्गोरिदम के रूप में पास करते हैं। – Oppositional

0

यह SHA-256 होना जरूरी है। वहाँ एक एसक्यूएल HASHBYTES() समारोह कर सकते हैं कि SHA, SHA1, MD5 आदि

(बेशक यह इस पर निर्भर करता है, तो आप सिर्फ एक मूल्य के हैश प्रतिनिधित्व चाहते हैं, या सुरक्षित रूप से बहुमूल्य डाटा स्टोर करने के लिए।)

+0

मामले में जोड़ा गया (मेरे जैसा) मैं SQL सर्वर में किसी भी देशी HASH फ़ंक्शन की खोज कर रहा था और वे इस प्रश्न में आते हैं। यह इंगित करेगा कि एचएएसएच कार्य प्रदान करने का एकमात्र तरीका सीएलआर है। – Guy

+0

सीएलआर उदाहरण: http://stackoverflow.com/questions/12416249/hashing-a-string-with-sha256 –

4
है

SHA256, एसएचए 512 एसक्यूएल सर्वर 2008 या एसक्यूएल सर्वर 2005 में!

अगर आप 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

आप डीएलएल कहां पा सकते हैं? – tigeryan

+0

आप इसे यहां प्राप्त कर सकते हैं: http://www.innoya.com/Tools/fnEnCryptSHA.aspx – chrilith

+0

मुझे एहसास नहीं हुआ कि आप SQL सर्वर के माध्यम से इतनी आसानी से .dll को कॉल कर सकते हैं। आप अपनी खुद की SHA-256 हैशिंग विधि को कक्षा/.dll में भी फेंक सकते हैं और इसे SQL के माध्यम से कॉल कर सकते हैं। बहुत अच्छा, उत्तर के लिए धन्यवाद। – clamum

संबंधित मुद्दे