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


KEY_NAME (Transact-SQL)

Возвращает имя симметричного ключа из идентификатора GUID симметричного ключа или зашифрованного текста.

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

Синтаксис

KEY_NAME ( ciphertext | key_guid ) 

Аргументы

  • ciphertext
    Текст, зашифрованный симметричным ключом. Аргумент cyphertext имеет тип varbinary(8000).

  • key_guid
    Идентификатор GUID симметричного ключа. Аргумент key_guid имеет тип uniqueidentifier.

Возвращаемые типы

varchar(128)

Разрешения

Начиная с SQL Server 2005, видимость метаданных ограничивается защищаемыми объектами, которыми пользователь владеет или на которые пользователю было предоставлено разрешение. Дополнительные сведения см. в разделе Настройка видимости метаданных.

Примеры

А. Отображение имени симметричного ключа, полученное с помощью идентификатора key_guid

База данных master содержит симметричный ключ с именем ##MS_ServiceMasterKey##. В следующем примере показано, как получить идентификатор GUID ключа из динамического административного представления sys.symmetric_keys, присвоить его переменной, а затем передать эту переменную в функцию KEY_NAME, чтобы вернуть имя, соответствующее идентификатору GUID.

USE master
GO
DECLARE @guid uniqueidentifier ;
SELECT @guid = key_guid FROM sys.symmetric_keys
WHERE name = '##MS_ServiceMasterKey##' ;
-- Demonstration of passing a GUID to KEY_NAME to receive a name
SELECT KEY_NAME(@guid) AS [Name of Key];
PASSWORD = 'decryption_password'

Б. Отображение имени симметричного ключа, полученное с помощью зашифрованного текста

В следующем примере показан весь процесс создания симметричного ключа и загрузки данных в таблицу. После этого в примере показано, как функция KEY_NAME возвращает имя ключа после получения зашифрованного текста.

-- Create a symmetric key
CREATE SYMMETRIC KEY TestSymKey 
   WITH ALGORITHM = AES_128,
   KEY_SOURCE = 'The square of the hypotenuse is equal to the sum of the squares of the sides',
   IDENTITY_VALUE = 'Pythagoras'
   ENCRYPTION BY PASSWORD = 'pGFD4bb925DGvbd2439587y' ;
GO
-- Create a table for the demonstration
CREATE TABLE DemoKey
(IDCol int IDENTITY PRIMARY KEY,
SecretCol varbinary(256) NOT NULL)
GO
-- Open the symmetric key if not already open
OPEN SYMMETRIC KEY TestSymKey 
    DECRYPTION BY PASSWORD = 'pGFD4bb925DGvbd2439587y';
GO
-- Insert a row into the DemoKey table
DECLARE @key_GUID uniqueidentifier
SELECT @key_GUID = key_guid FROM sys.symmetric_keys
WHERE name LIKE 'TestSymKey' ;
INSERT INTO DemoKey(SecretCol)
VALUES ( ENCRYPTBYKEY (@key_GUID, 'EncryptedText'))
GO
-- Verify the DemoKey data
SELECT * FROM DemoKey
GO
-- Decrypt the data
DECLARE @ciphertext varbinary(256)
SELECT @ciphertext = SecretCol
FROM DemoKey WHERE IDCol = 1 ;
SELECT CAST (
DECRYPTBYKEY( @ciphertext)
AS varchar(100) ) AS SecretText ;
-- Use KEY_NAME to view the name of the key
SELECT KEY_NAME(@ciphertext) AS [Name of Key] ;