ENCRYPTBYPASSPHRASE (Transact-SQL)
Esegue la crittografia dei dati con una passphrase, utilizzando l'algoritmo TRIPLE DES con una lunghezza della chiave pari a 128 bit.
Sintassi
EncryptByPassPhrase ( { 'passphrase' | @passphrase }
, { 'cleartext' | @cleartext }
[ , { add_authenticator | @add_authenticator }
, { authenticator | @authenticator } ] )
Argomenti
passphrase
Passphrase dalla quale generare una chiave simmetrica.@passphrase
Variabile di tipo nvarchar, char, varchar, binary, varbinary o nchar contenente una passphrase da cui generare una chiave simmetrica.cleartext
Testo non crittografato da crittografare.@cleartext
Variabile di tipo nvarchar, char, varchar, binary, varbinary o nchar contenente il testo non crittografato. Le dimensioni massime sono pari a 8.000 byte.add_authenticator
Indica se un autenticatore verrà crittografato insieme al testo non crittografato. 1 se verrà aggiunto un autenticatore. int.@add_authenticator
Indica se un hash verrà crittografato insieme al testo non crittografato.authenticator
Dati da cui derivare un autenticatore. sysname.@authenticator
Variabile contenente i dati dai quali derivare un autenticatore.
Tipi restituiti
varbinary con un valore massimo di 8.000 byte.
Osservazioni
Una passphrase è una password contenente spazi. Il vantaggio dell'utilizzo di una passphrase consiste nel fatto che è più facile ricordare una frase significativa che una stringa di caratteri di pari lunghezza.
Questa funzione non controlla la complessità delle password.
Esempi
Nell'esempio seguente viene aggiornato un record della tabella SalesCreditCard e viene crittografato il valore del numero della carta di credito archiviato nella colonna CardNumber_EncryptedbyPassphrase, utilizzando la chiave primaria come autenticatore.
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