ENCRYPTBYPASSPHRASE (Transact-SQL)
Criptografar dados com uma senha.
Sintaxe
EncryptByPassPhrase ( { 'passphrase' | @passphrase }
, { 'cleartext' | @cleartext }
[ , { add_authenticator | @add_authenticator }
, { authenticator | @authenticator } ] )
Argumentos
passphrase
Uma senha a partir da qual gerar uma chave simétrica.@passphrase
Uma variável do tipo nvarchar, char, varchar, binary, varbinary, ou nchar contendo a senha a partir da qual será gerada uma chave simétrica.cleartext
O texto não criptografado a ser criptografado.@cleartext
Uma variável de tipo nvarchar, char, varchar, binary, varbinary ou nchar que contém o texto não criptografado. O tamanho máximo é 8.000 bytes.add_authenticator
Indica se um autenticador será criptografado junto com o texto não criptografado. 1 se um autenticador for adicionado. int.@add_authenticator
Indica se um hash será criptografado junto com o texto não criptografado.authenticator
Dados do qual derivar um autenticador. sysname.@authenticator
Uma variável contendo dados a partir dos quais o autenticador será derivado.
Tipos de retorno
varbinary com no máximo 8.000 bytes.
Comentários
Uma senha (passphrase) é uma senha que inclui espaços. A vantagem de usar uma senha assim é a facilidade em lembrar uma frase ou sentença com sentido do que uma cadeia de caracteres comparavelmente longa.
Esta função não verifica a complexidade de senha.
Exemplos
O seguinte exemplo atualiza um registro na tabela SalesCreditCard e criptografa o valor de um número de cartão de crédito na coluna CardNumber_EncryptedbyPassphrase, usando a chave primária como um autenticador.
USE AdventureWorks;
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