ENCRYPTBYASYMKEY (Transact-SQL)

Se aplica a:SQL ServerAzure SQL DatabaseAzure 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 } )  

Nota:

Para ver la sintaxis de Transact-SQL para SQL Server 2014 (12.x) y versiones anteriores, consulte Versiones anteriores de la documentación.

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