DECRYPTBYKEYAUTOCERT (języka Transact-SQL)
Tworzenie zestaw kolekcja przy użyciu określonych wartości
DecryptByKeyAutoCert ( cert_ID , cert_password
, { 'ciphertext' | @ciphertext }
[ , { add_authenticator | @add_authenticator }
[ , { authenticator | @authenticator } ] ] )
Argumenty
cert_ID
Is the ID of the certificate that is used to protect the symmetric key.cert_ID is int.cert_password
Zwraca liczbę wyzwalaczy do wykonania dla instrukcja, która uruchomienia wyzwalacza.Can be NULL if the private key is protected by the database master key.cert_password is varchar.'ciphertext'
Is the data that was encrypted with the key.ciphertext is varbinary.@ szyfrowany
Jest zmienną typu varbinary zawierający dane, które zostały zaszyfrowane przy użyciu klucz.add_authenticator
Wskazuje, czy wystawca uwierzytelnienia został zaszyfrowany wraz z zwykły tekst.Must be the same value that is passed to EncryptByKey when encrypting the data.Is 1 if an authenticator was used.add_authenticator is int.@ add_authenticator
Wskazuje, czy wystawca uwierzytelnienia został zaszyfrowany wraz z zwykły tekst.Musi być taką samą wartość, który jest przekazywany do EncryptByKey podczas szyfrowania danych.authenticator
Znajdują się dane dla generatora wystawca uwierzytelnienia.Must match the value that was supplied to EncryptByKey.authenticator is sysname.@ wystawca uwierzytelnienia
Czy zmienna, która zawiera dane, z których można wygenerować wystawca uwierzytelnienia.Musi odpowiadać wartości, które zostało dostarczone jako EncryptByKey.
Zwracane typy
varbinary Maksymalny rozmiar 8000 bajtów.
Remarks
Funkcja DecryptByKeyAutoCert łączy funkcjonalność instrukcji OPEN SYMMETRIC KEY i funkcji DecryptByKey.W pojedynczej operacji odszyfrowuje ona klucz symetryczny i używa go do odszyfrowania zaszyfrowanego tekstu.
Uprawnienia
Wymaga DEFINICJA WIDOKU uprawnienia klucz symetrycznego i FORMANT uprawnień w certyfikacie.
Przykłady
W poniższym przykładzie pokazano sposób użycia funkcji DecryptByKeyAutoCert do uproszczenia kodu wykonującego operacją odszyfrowywania.Ten kod należy uruchomić dla świeżo zainstalowanej kopii bazy danych AdventureWorks.
--Create the keys and certificate.
USE AdventureWorks;
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'mzkvdlk979438teag$$ds987yghn)(*&4fdg^';
OPEN MASTER KEY DECRYPTION BY PASSWORD = 'mzkvdlk979438teag$$ds987yghn)(*&4fdg^';
CREATE CERTIFICATE HumanResources037
WITH SUBJECT = 'Sammamish HR',
EXPIRY_DATE = '10/31/2009';
CREATE SYMMETRIC KEY SSN_Key_01 WITH ALGORITHM = DES
ENCRYPTION BY CERTIFICATE HumanResources037;
GO
----Add a column of encrypted data.
ALTER TABLE HumanResources.Employee
ADD EncryptedNationalIDNumber varbinary(128);
OPEN SYMMETRIC KEY SSN_Key_01
DECRYPTION BY CERTIFICATE HumanResources037 ;
UPDATE HumanResources.Employee
SET EncryptedNationalIDNumber
= EncryptByKey(Key_GUID('SSN_Key_01'), NationalIDNumber);
GO
--
--Close the key used to encrypt the data.
CLOSE SYMMETRIC KEY SSN_Key_01;
--
--There are two ways to decrypt the stored data.
--
--OPTION ONE, using DecryptByKey()
--1. Open the symmetric key
--2. Decrypt the data
--3. Close the symmetric key
OPEN SYMMETRIC KEY SSN_Key_01
DECRYPTION BY CERTIFICATE HumanResources037;
SELECT NationalIDNumber, EncryptedNationalIDNumber
AS 'Encrypted ID Number',
CONVERT(nvarchar, DecryptByKey(EncryptedNationalIDNumber))
AS 'Decrypted ID Number'
FROM HumanResources.Employee;
CLOSE SYMMETRIC KEY SSN_Key_01;
--
--OPTION TWO, using DecryptByKeyAutoCert()
SELECT NationalIDNumber, EncryptedNationalIDNumber
AS 'Encrypted ID Number',
CONVERT(nvarchar, DecryptByKeyAutoCert ( cert_ID('HumanResources037') , NULL ,EncryptedNationalIDNumber))
AS 'Decrypted ID Number'
FROM HumanResources.Employee;
See Also