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


DECRYPTBYPASSPHRASE (Transact-SQL)

Область применения: SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure

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

Соглашения о синтаксисе Transact-SQL

Синтаксис

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

Аргументы

passphrase
Парольная фраза, использовавшаяся для формирования ключа шифрования.

@passphrase
Переменная типа char, nchar, nvarchar или varchar с парольной фразой, использовавшейся для формирования ключа расшифровки.

'ciphertext'
Строка данных, зашифрованная с помощью ключа. ciphertext имеет тип данных varbinary.

@ciphertext
Переменная типа varbinary, содержащая данные, зашифрованные с помощью ключа. Максимальный размер переменной @ciphertext составляет 8000 байт.

add_authenticator
Указывает, включен ли исходный процесс шифрования и зашифрована ли структура проверки подлинности вместе с данными в виде открытого текста. add_authenticator имеет значение 1, если в процессе шифрования использовалась структура проверки подлинности. add_authenticator имеет тип данных int.

@add_authenticator
Переменная, указывающая, включен ли исходный процесс шифрования и зашифрована ли структура проверки подлинности вместе с данными в виде открытого текста. Здесь @add_authenticator имеет значение 1, если в процессе шифрования использовалась структура проверки подлинности. @add_authenticator имеет тип данных int.

authenticator
Данные, используемые в качестве основы для создания структуры проверки подлинности. authenticator имеет тип данных sysname.

@authenticator
Переменная, содержащая данные, которые использовались в качестве основы для создания структуры проверки подлинности. authenticator имеет тип данных sysname.

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

Переменная типа varbinary с максимальным размером 8000 байт.

Замечания

Для выполнения DECRYPTBYPASSPHRASE разрешения не требуются. Функция DECRYPTBYPASSPHRASE возвращает значение NULL, если получает неправильную парольную фразу или данные структуры проверки подлинности.

Функция DECRYPTBYPASSPHRASE использует парольную фразу для формирования ключа расшифровки. Этот ключ расшифровки не сохраняется.

Если в зашифрованный текст включалась структура проверки подлинности, функция DECRYPTBYPASSPHRASE должна получить эту структуру во время расшифровки. Если значение структуры проверки подлинности, предоставленное для процесса расшифровки, не соответствует значению структуры проверки подлинности, изначально использовавшемуся для шифрования данных, операция DECRYPTBYPASSPHRASE завершится неудачно.

Примеры

В приведенном ниже примере расшифровывается запись, обновленная в функции EncryptByPassPhrase.

USE AdventureWorks2022;  
-- Get the passphrase from the user.  
DECLARE @PassphraseEnteredByUser NVARCHAR(128);  
SET @PassphraseEnteredByUser   
= 'A little learning is a dangerous thing!';  
  
-- Decrypt the encrypted record.  
SELECT CardNumber, CardNumber_EncryptedbyPassphrase   
    AS 'Encrypted card number', CONVERT(varchar,  
    DecryptByPassphrase(@PassphraseEnteredByUser, CardNumber_EncryptedbyPassphrase, 1   
    , CONVERT(varbinary, CreditCardID)))  
    AS 'Decrypted card number' FROM Sales.CreditCard   
    WHERE CreditCardID = '3681';  
GO  

См. также

Выбор алгоритма шифрования
ENCRYPTBYPASSPHRASE (Transact-SQL)