ENCRYPTBYPASSPHRASE (Transact-SQL)
Se aplica a: SQL Server Azure SQL Database Azure SQL Managed Instance
Cifra datos mediante una frase de contraseña usando el algoritmo TRIPLE DES con una longitud de clave de 128 bits.
Nota:
SQL Server 2017 y las versiones posteriores cifran los datos con una frase de contraseña mediante una clave AES256.
Convenciones de sintaxis de Transact-SQL
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.
texto no cifrado
Texto no cifrado que se va a cifrar.
@cleartext
Una 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 devuelto
varbinary con un tamaño máximo de 8000 bytes.
Comentarios
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 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