ENCRYPTBYPASSPHRASE (Transact-SQL)
Cifra datos mediante una frase de contraseña.
Sintaxis
EncryptByPassPhrase ( { 'passphrase' | @passphrase }
, { 'cleartext' | @cleartext }
[ , { add_authenticator | @add_authenticator }
, { authenticator | @authenticator } ] )
Argumentos
passphrase
Frase de contraseña a partir de la cual se genera una clave simétrica.@passphrase
Variable de tipo nvarchar, char, varchar, binary, varbinary, o nchar que contiene una frase de contraseña a partir de la cual se genera una clave simétrica.cleartext
Texto no cifrado que se va a cifrar.@cleartext
Variable de tipo nvarchar, char, varchar, binary, varbinary o nchar que contiene el texto sin cifrar. El tamaño máximo es de 8.000 bytes.add_authenticator
Indica si se cifrará un autenticador junto con el texto sin cifrar. 1 si se va a agregar un autenticador. int.@add_authenticator
Indica si se cifrará un hash junto con el texto no cifrado.authenticator
Datos a partir de los cuales se obtiene un autenticador. sysname.@authenticator
Variable que contiene datos a partir de los cuales se obtiene un autenticador.
Tipos de valor devueltos
varbinary con un tamaño máximo de 8.000 bytes.
Notas
Una frase de contraseña es una contraseña que incluye espacios. La ventaja de usar una frase de contraseña es que es más fácil recordar una frase con significado que una cadena larga de caracteres.
Esta función no comprueba la complejidad de la contraseña.
Ejemplos
En el ejemplo siguiente se actualiza un registro de la tabla SalesCreditCard y se cifra el valor del número de la tarjeta de crédito almacenado en la columna CardNumber_EncryptedbyPassphrase utilizando la clave principal como un 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