2013-02-26 18 views
5

में किसी कॉलम में डेटा एन्क्रिप्ट करें क्या डेटा एन्क्रिप्ट करने के लिए SQL सर्वर में कोई एल्गोरिदम मौजूद है। मेरे पास एक पासवर्ड फ़ील्ड है जिसे मुझे एन्क्रिप्ट करने की आवश्यकता है, लेकिन संग्रहीत प्रक्रिया में इसे पारित होने के बाद मुझे डेटा एन्क्रिप्ट करना होगा। इसका मतलब है कि मैं अपने सी # कोड से एन्क्रिप्टेड डेटा पास नहीं कर सकता।SQL सर्वर

CREATE PROC saveData(@p1 VARCHAR(50), 
       @p2 VARCHAR(50)) 
AS 
BEGIN 
    DECLARE @encryptedP1 VARCHAR(50) 

    SET @encryptedP1=dbo.fnEncrypt(@p1) --ENCRYPTING THE DATA WITH AN INBUILT FUNCTION 

    INSERT INTO table1 
       (column1, 
       column2) 
    VALUES  (@encryptedP1, 
       @p2) 
END 
+0

एन्क्रिप्ट अस्पष्ट है। आप किस एन्क्रिप्शन एल्गोरिदम का उपयोग करना चाहते हैं? निजी और सार्वजनिक कुंजी कहाँ संग्रहित की जाएगी? क्या इसे एन्क्रिप्टेड या क्रिप्टोग्राफिक रूप से धोने की आवश्यकता है? – crush

+0

मुझे सुझाव है कि सुरक्षा उद्देश्य –

+0

के लिए सबसे अच्छा कौन सा है, यह इस बात पर निर्भर करता है कि आपको डेटा के साथ क्या करना है। यदि आपको कभी भी पासवर्ड पुनर्प्राप्त करने की आवश्यकता होगी, क्योंकि उन्हें बस रीसेट करने के विरोध में, तो हैशिंग प्रश्न से बाहर है। – crush

उत्तर

-1

मैं एक नमकीन SHA1 या md5

CONVERT(VARCHAR(32), HashBytes('MD5', '[email protected]'), 2) 

सुझाव है हालांकि तकनीकी रूप से हैशिंग एन्क्रिप्शन नहीं है जाएगा।

+0

मैंने पहले ही उल्लेख किया है कि, मुझे सी # –

+0

में एन्क्रिप्शन/डिक्रिप्शन की अनुमति नहीं है यह एक हैश है, एन्क्रिप्शन नहीं है। साथ ही, आप SQL में SHA1 और MD5 दोनों को निष्पादित कर सकते हैं। – crush

+0

कृपया मेरा संपादन देखें। – idipous

3

सामान्य रूप से, अच्छे पुराने पिनल डेव में useful information on this है। यह थोड़ा सा शामिल है लेकिन यदि आप क्लाइंट साइड कोड के बजाय SQL सर्वर में करते हैं तो इसे आपके लिए नौकरी करना चाहिए। आप प्रदर्शन समस्याओं के लिए नजर रख सकते हैं हालांकि यह काफी सीपीयू गहन प्रक्रिया है।

+2

वर्ष की कमी। डाटाबेस सर्वर पर इस प्रकार की प्रसंस्करण करना आम तौर पर अच्छा विचार नहीं है। (एनोटेशन एक आलोचना नहीं) – crush

+6

डाउनवॉटर - टिप्पणी करने की देखभाल? मूल प्रश्न SQL सर्वर में एन्क्रिप्शन के बारे में पूछा गया जो उसे मिला। ऐसा लगता है कि आप इसे एक अच्छा विचार नहीं मानते हैं। बिल्ली मैंने यह भी बताया कि ... – Simon

+0

@ सिमॉन: खोज मुझे यहां ले जाती है, आप लिंक – TheGameiswar

4

यह एक बहुत तेज़ उदाहरण है। यह असममित कुंजी के साथ काम करता है। मुझे उम्मीद है कि यह मदद कर सकता है।

सबसे पहले: इस कोड का उपयोग कर अपने असममित कुंजी बनाएँ:


USE [yourDB] 

GO 

CREATE ASYMMETRIC KEY ClaveAsym 

WITH ALGORITHM = RSA_2048 ---->Take a look in this type of algorithms 

ENCRYPTION BY PASSWORD = 'yourKey' 

GO 

इस याद रखें, आप है कि आप करना चाहते डिक्रिप्ट या एन्क्रिप्ट एक चर घोषित करने के लिए करना चाहिए

DECLARE @KEYID INT 
SET @KEYID = AsymKey_ID('ClaveAsym') 

डिक्रिप्ट डेटा

SELECT columnA, CAST(DecryptByAsymKey(@keyid, columnUser, N'yourKey') AS VARCHAR(100)), 
     CONVERT(VARCHAR(MAX), DECRYPTBYASYMKEY(@keyId, columnPass, N'yourKey')) 
FROM yourTable 

को कूटबद्ध करने डाटा

DECLARE @User VARCHAR(MAX), @pass VARCHAR(MAX) 

SET @User = 'yourUser' 

sET @pass = 'yourPass' 

DECLARE @KEYID INT SET @KEYID = AsymKey_ID('ClaveAsym') 

INSERT INTO yourTable(User, passw) VALUES EncryptByAsymKey (@keyid, @User), EncryptByAsymKey (@keyid, @pass))