Używam programu SQL Server 2008/2012. W mojej bazie danych mam tabelę z zaszyfrowaną kolumną. Kolumna jest szyfrowana za pomocą następującej kwerendy -Uzyskaj zaszyfrowaną nazwę kolumny kluczem szyfrowania i certyfikatem na serwerze sql
Utwórz przykładową tabelę
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
Skonfiguruj Master Key
CREATE MASTER KEY ENCRYPTION BY
PASSWORD = '[email protected]'
GO
Tworzenie Symetryczny klucz i certyfikat
CREATE CERTIFICATE TestCert
WITH SUBJECT = 'SSN Encryption';
GO
CREATE SYMMETRIC KEY HRKey
WITH ALGORITHM = DES
ENCRYPTION BY CERTIFICATE TestCert;
GO
szyfrowania danych
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
Jestem odszyfrowania tych danych za pomocą kwerendy -
OPEN SYMMETRIC KEY HRKey
DECRYPTION BY CERTIFICATE TestCert;
SELECT [SSN],
CONVERT(VARCHAR, DecryptByKey([EncryptedSSN]))
AS 'Decrypted SSN'
FROM [HR].[Employees]
GO
Poniżej podajemy wartość klucz/certyfikat ustalony.
jestem coraz zaszyfrowaną nazwę kolumny z ich stole przez tego zapytania -
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
a lista kluczy i certyfikatu przez tego zapytania -
SELECT name, key_length, algorithm_desc, create_date, modify_date
FROM sys.symmetric_keys;
SELECT name, subject, start_date, expiry_date
FROM sys.certificates
teraz chcę, aby uzyskać dany klawisz/do kolumny zaszyfrowanej należy certyfikat, dlatego mogę zastosować odszyfrowywanie w tej kolumnie bez podawania wartości zakodowanej na stałe. Proszę mi pomóc ....