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


ENCRYPTBYPASSPHRASE (Transact-SQL)

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

Шифрование данных с помощью парольной фразы с использованием алгоритма TRIPLE DES и 128-битного ключа.

Примечание.

SQL Server 2017 и более поздних версий шифрует данные с помощью парольной фразы с помощью ключа AES256.

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

Синтаксис

EncryptByPassPhrase ( { 'passphrase' | @passphrase }   
    , { 'cleartext' | @cleartext }  
  [ , { add_authenticator | @add_authenticator }  
    , { authenticator | @authenticator } ] )  

Аргументы

passphrase
Парольная фраза, из которой создается симметричный ключ.

@passphrase
Переменная типа nvarchar, char, varchar, binary, varbinary или nchar, содержащая парольную фразу, по которой создается симметричный ключ.

cleartext
Открытый текст для шифрования.

@cleartext
Переменная типа nvarchar, char, varchar, binary, varbinary или nchar, содержащая открытый текст. Максимальный размер 8 000 байт.

add_authenticator
Указывает, будут ли вместе с аргументом cleartext зашифрована структура проверки подлинности. Значение 1, если структура проверки подлинности будет добавлено. int.

@add_authenticator
Показывает, будет ли зашифрован хэш вместе с открытым текстом.

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

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

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

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

Замечания

Парольная фраза представляет собой пароль, содержащий пробелы. Преимущество использования парольной фразы состоит в том, что смысловая фраза или предложение легче для запоминания, чем длинная строка символов.

Данная функция не проверяет сложность пароля.

Примеры

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

USE AdventureWorks2022;  
GO  
-- Create a column in which to store the encrypted data.  
ALTER TABLE Sales.CreditCard   
    ADD CardNumber_EncryptedbyPassphrase VARBINARY(256);   
GO  
-- First get the passphrase from the user.  
DECLARE @PassphraseEnteredByUser NVARCHAR(128);  
SET @PassphraseEnteredByUser   
    = 'A little learning is a dangerous thing!';  
  
-- Update the record for the user's credit card.  
-- In this case, the record is number 3681.  
UPDATE Sales.CreditCard  
SET CardNumber_EncryptedbyPassphrase = EncryptByPassPhrase(@PassphraseEnteredByUser  
    , CardNumber, 1, CONVERT(varbinary, CreditCardID))  
WHERE CreditCardID = '3681';  
GO  

См. также

DECRYPTBYPASSPHRASE (Transact-SQL)
Иерархия средств шифрования