ENCRYPTBYPASSPHRASE (Transact-SQL)

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

Значок ссылки на разделСинтаксические обозначения 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
    Указывает, будет ли вместе с открытым текстом зашифрована структура проверки подлинности. Значение 1, если структура проверки подлинности будет добавлена. int.

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

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

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

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

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

Замечания

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

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

Примеры

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

USE AdventureWorks2008R2;
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