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  

Vea también

DECRYPTBYPASSPHRASE (Transact-SQL)
Jerarquía de cifrado