ENCRYPTBYASYMKEY (Transact-SQL)
Se aplica a: SQL Server Azure SQL Database Azure SQL Managed Instance
Esta función cifra los datos con una clave asimétrica.
Convenciones de sintaxis de Transact-SQL
Sintaxis
EncryptByAsymKey ( Asym_Key_ID , { 'plaintext' | @plaintext } )
Argumentos
asym_key_ID
Id. de una clave asimétrica en la base de datos. asym_key_ID tiene un tipo de datos int.
cleartext
Cadena de datos que ENCRYPTBYASYMKEY
cifrará con la clave asimétrica. cleartext puede tener un tipo de
- binary
- char
- nchar
- nvarchar
- varbinary
o bien
- varchar
datos.
@plaintext
Una variable que contiene un valor que ENCRYPTBYASYMKEY
cifrará con la clave asimétrica. @plaintext puede tener un tipo de datos
- binary
- char
- nchar
- nvarchar
- varbinary
o bien
- varchar
datos.
Tipos de valor devuelto
varbinary, con un tamaño máximo de 8 000 bytes.
Observaciones
Las operaciones de cifrado y descifrado en las que se usan claves asimétricas consumen muchos recursos y, por tanto, son muy costosas en comparación con el descifrado y cifrado de claves simétricas. Se recomienda que los desarrolladores eviten el cifrado y descifrado de claves asimétricas en grandes conjuntos de datos (por ejemplo, conjuntos de datos de usuario almacenados en tablas de base de datos). En su lugar, se recomienda que los desarrolladores cifren primero los datos con una clave simétrica segura y, después, cifren esa clave simétrica con una clave asimétrica.
En función del algoritmo, ENCRYPTBYASYMKEY
devuelve NULL si la entrada supera un número determinado de bytes. Los límites específicos:
- una clave RSA de 512 bits puede cifrar hasta 53 bytes
- una clave de 1024 bits puede cifrar hasta 117 bytes
- una clave de 2048 bits puede cifrar hasta 245 bytes
En SQL Server, tanto los certificados como las claves asimétricas sirven de contenedores de claves RSA.
Ejemplos
En este ejemplo se cifra el texto almacenado en @cleartext
con la clave asimétrica JanainaAsymKey02
. La instrucción inserta los datos cifrados en la tabla ProtectedData04
.
INSERT INTO AdventureWorks2022.Sales.ProtectedData04
VALUES( N'Data encrypted by asymmetric key ''JanainaAsymKey02''',
EncryptByAsymKey(AsymKey_ID('JanainaAsymKey02'), @cleartext) );
GO
Vea también
DECRYPTBYASYMKEY (Transact-SQL)
CREATE ASYMMETRIC KEY (Transact-SQL)
Jerarquía de cifrado