Поделиться через


DecryptByKey (Transact-SQL)

Расшифровывает данные с помощью симметричного ключа.

Значок ссылки на разделСоглашения о синтаксисе в Transact-SQL

Синтаксис

DecryptByKey ( { 'ciphertext' | @ciphertext } 
              [ , add_authenticator 
                                , { authenticator | @authenticator } 
              ]
                          )

Аргументы

  • ciphertext
    Данные, зашифрованные с помощью ключа. varbinary.
  • @ciphertext
    Переменная типа varbinary. Содержит данные, которые были зашифрованы с помощью ключа.
  • add_authenticator
    Указывает, было ли средство проверки подлинности зашифровано вместе с неформатированным текстом. Значение этого аргумента должно быть равно значению, переданному функции EncryptByKey при шифровании данных. Аргумент имеет тип данных int.
  • authenticator
    Данные, для которых формируется средство проверки подлинности. Должны соответствовать значению, переданному в EncryptByKey. sysname.
  • @authenticator
    Переменная, содержащая сведения, из которых формируются данные для проверки подлинности. Значение аргумента должно совпадать со значением, заданным функции EncryptByKey.

Типы возвращаемых данных

varbinary с максимальным размером 8 000 байт.

Замечания

В функции DecryptByKey используется симметричный ключ. Этот симметричный ключ должен быть открыт уже в базе данных. Одновременно могут быть открыты несколько ключей. Открывать ключ непосредственно перед раскодированием необязательно.

Симметричное кодирование и декодирование осуществляется относительно быстро и подходит для работы с большими объемами данных.

Примеры

A. Декодирование с помощью симметричного ключа

Следующий пример иллюстрирует декодирование зашифрованного текста с помощью симметричного ключа.

-- First, open the symmetric key with which to decrypt the data.
OPEN SYMMETRIC KEY SSN_Key_01
   DECRYPTION BY CERTIFICATE HumanResources037;
GO

-- Now list the original ID, the encrypted ID, and the 
-- decrypted ciphertext. If the decryption worked, the original
-- and the decrypted ID will match.
SELECT NationalIDNumber, EncryptedNationalID 
    AS 'Encrypted ID Number',
    CONVERT(nvarchar, DecryptByKey(EncryptedNationalID)) 
    AS 'Decrypted ID Number'
    FROM HumanResources.Employee;
GO

Б. Декодирование с помощью симметричного ключа и цифровой подписи

Следующий пример иллюстрирует расшифровку данных, зашифрованных с помощью средства проверки подлинности.

-- First, open the symmetric key with which to decrypt the data
OPEN SYMMETRIC KEY CreditCards_Key11
   DECRYPTION BY CERTIFICATE Sales09;
GO

-- Now list the original card number, the encrypted card number,
-- and the decrypted ciphertext. If the decryption worked, 
-- the original number will match the decrypted number.
SELECT CardNumber, CardNumber_Encrypted 
    AS 'Encrypted card number', CONVERT(nvarchar,
    DecryptByKey(CardNumber_Encrypted, 1 , 
    HashBytes('SHA1', CONVERT(varbinary, CreditCardID)))) 
    AS 'Decrypted card number' FROM Sales.CreditCard;
GO

См. также

Справочник

EncryptByKey (Transact-SQL)
CREATE SYMMETRIC KEY (Transact-SQL)
ALTER SYMMETRIC KEY (Transact-SQL)
DROP SYMMETRIC KEY (Transact-SQL)

Другие ресурсы

Иерархия средств шифрования
Выбор алгоритма шифрования

Справка и поддержка

Получение помощи по SQL Server 2005