Partager via


KEY_NAME (Transact-SQL)

Retourne le nom de la clé symétrique à partir d'un GUID de clé symétrique ou d'un texte chiffré.

Icône Lien de rubriqueConventions de syntaxe Transact-SQL

Syntaxe

KEY_NAME ( ciphertext | key_guid ) 

Arguments

  • ciphertext
    Texte chiffré par la clé symétrique. L'argument cyphertext est de type varbinary(8000).

  • key_guid
    GUID de la clé symétrique. L'argument key_guid est de type uniqueidentifier.

Types retournés

varchar(128)

Autorisations

À compter de la version SQL Server 2005, les métadonnées ne sont visibles que pour les éléments sécurisables qu'un utilisateur détient ou pour lesquels des autorisations lui ont été accordées. Pour plus d'informations, consultez Configuration de la visibilité des métadonnées.

Exemples

A. Affichage du nom d'une clé symétrique à l'aide de key_guid

La base de données MASTER contient une clé symétrique nommée ##MS_ServiceMasterKey##. L'exemple suivant obtient le GUID de cette clé à partir de la vue de gestion dynamique sys.symmetric_keys, l'assigne à une variable, puis passe cette variable à la fonction KEY_NAME pour montrer comment retourner le nom correspondant au 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'

B. Affichage du nom d'une clé symétrique à l'aide du texte chiffré

L'exemple suivant décrit l'intégralité du processus de création d'une clé symétrique et de remplissage d'une table. Il montre ensuite comment la fonction KEY_NAME retourne le nom de la clé après avoir reçu le texte chiffré.

-- 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] ;