में एन्क्रिप्शन कुंजी और प्रमाण पत्र के साथ एन्क्रिप्टेड कॉलम नाम प्राप्त करें मैं SQL Server 2008/2012 का उपयोग कर रहा हूं। मेरे डेटाबेस में मेरे पास एक तालिका है जिसमें एन्क्रिप्टेड कॉलम है। स्तंभ निम्न क्वेरी का उपयोग करके एन्क्रिप्ट किया गया है -एसक्यूएल सर्वर
उदाहरण तालिका
CREATE TABLE [HR].[Employees](
[EmployeeID] [int] NOT NULL,
[EmployeeName] [varchar](50) NULL,
[SSN] [varchar](20) NOT NULL,
[EncryptedSSN] [varbinary] (200) NULL,
CONSTRAINT [PK_Employees] PRIMARY KEY CLUSTERED
( [EmployeeID] ASC)
)
GO
मास्टर कुंजी
CREATE MASTER KEY ENCRYPTION BY
PASSWORD = '[email protected]'
GO
सममित कुंजी बनाएँ और प्रमाण पत्र
सेट अप बनाएंCREATE CERTIFICATE TestCert
WITH SUBJECT = 'SSN Encryption';
GO
CREATE SYMMETRIC KEY HRKey
WITH ALGORITHM = DES
ENCRYPTION BY CERTIFICATE TestCert;
GO
डेटा एन्क्रिप्ट
OPEN SYMMETRIC KEY HRKey
DECRYPTION BY CERTIFICATE TestCert;
Now we can update the EncryptedSSN column of our Employees table.
UPDATE [HR].[Employees]
SET [EncryptedSSN] = EncryptByKey(Key_GUID('HRKey'), SSN);
GO
मैं हूँ क्वेरी का उपयोग करके इस डेटा decrypting -
OPEN SYMMETRIC KEY HRKey
DECRYPTION BY CERTIFICATE TestCert;
SELECT [SSN],
CONVERT(VARCHAR, DecryptByKey([EncryptedSSN]))
AS 'Decrypted SSN'
FROM [HR].[Employees]
GO
यहाँ हम कुंजी/प्रमाणपत्र मूल्य हार्डकोडेड दे।
मैं इस प्रश्न के द्वारा अपने मेज के साथ एन्क्रिप्टेड स्तंभ नाम हो रही है -
SELECT stab.name Table_Name, sc.name Column_Name FROM sys.columns sc
INNER JOIN sys.types st ON sc.system_type_id=st.system_type_id
INNER JOIN sys.tables stab ON stab.object_id=sc.object_id
WHERE st.name='varbinary'
AND stab.is_ms_shipped=0
और इस क्वेरी से कुंजी और प्रमाणपत्र सूची -
SELECT name, key_length, algorithm_desc, create_date, modify_date
FROM sys.symmetric_keys;
SELECT name, subject, start_date, expiry_date
FROM sys.certificates
अब मैं जो कुंजी प्राप्त करना चाहते हैं/प्रमाण पत्र किस एन्क्रिप्टेड कॉलम से संबंधित है, इसलिए मैं हार्डकोड किए गए मान दिए बिना उस कॉलम पर डिक्रिप्शन लागू कर सकता हूं। कृपया मेरी मदद करें ....