Encrypts plaintext into ciphertext.
Usage notes
You can call the Encrypt operation or the AdvanceEncrypt operation to encrypt plaintext into ciphertext. The following section describes the differences between the two operations:
Encrypt: The initial version of a key is used for encryption. After encryption, you can call the Decrypt operation or the AdvanceDecrypt operation to decrypt the encrypted data.
AdvanceEncrypt: The primary version of a key is used for encryption. After encryption, you must call the AdvanceDecrypt operation to decrypt the encrypted data. Only symmetric keys in Key Management Service (KMS) instances of the software key management type support this operation.
If you use a symmetric key in KMS instances of the software key management type and enable automatic rotation for the key, you must call the AdvanceEncrypt operation to encrypt data to prevent the key rotation feature from becoming invalid. For more information about key rotation, see Configure key rotation.
For more information about key specifications, encryption modes, and key versions, see Key types and specifications.
Usage notes
Make sure that the request body cannot exceed 3 MB in length after all request parameters are encoded by using Protocol Buffers. If the request body exceeds 3 MB, the server rejects the request and returns an HTTP 413 status code. We recommend that you limit the data size to 6 KB for encryption and decryption by using symmetric keys and 1 KB for encryption and decryption by using asymmetric keys in a single operation. If the data exceeds the limits, we recommend that you use envelope encryption. For more information, see Use envelope encryption.
High amount of data in a single encryption or decryption raises the risk of network failures, prolongs the time required for network transmission, and extends the duration required for KMS to encrypt and decrypt data.
Request parameters
Parameter | Type | Required | Example | Description |
KeyId | string | Yes | key-hzz62f1cb66fa42qo**** | The globally unique ID of the key. You can set this parameter to an alias that is bound to the key. |
Plaintext | bytes | Yes | Binary data | The plaintext that you want to encrypt. |
Algorithm | string | No | AES_GCM | The encryption algorithm. If you do not set this parameter, KMS uses the default value. For more information, see Key types and specifications. |
Iv | bytes | No | Binary data | The initial vector that is used to encrypt data. This parameter takes effect only when Algorithm is set to AES_GCM or AES_CBC.
If you do not set this parameter, KMS generates a random number. Important We recommend that you do not set this parameter. |
Aad | binary | No | Binary data | The GCM encryption mode that is used to authenticate the data. If the key is a symmetric key and Algorithm is set to AES_GCM or SM4_GCM, you can specify this parameter. Important If you specify this parameter, you must specify the parameter when you call the Decrypt operation. |
PaddingMode | string | No | PKCS7_PADDING | The padding mode. This parameter is required only when Algorithm is set to AES_CBC or AES_ECB. Valid values:
|
Response parameters
Parameter | Type | Example | Description |
Iv | bytes | Binary data | The initial vector that is used to encrypt data. This parameter returns a valid value only when Algorithm is set to AES_GCM or AES_CBC. In other scenarios, an empty value is returned. |
CiphertextBlob | bytes | Binary data | The ciphertext of the data that is encrypted by using a key. Note When the Elliptic Curve Integrated Encryption Scheme (ECIES) algorithm is used, the returned data ciphertext format follows the SEC 1: Elliptic Curve Cryptography, Version 2.0 standards. |
KeyId | string | key-hzz62f1cb66fa42qo**** | The globally unique ID of the key. If you set KeyId in the request to an alias of the key, the ID of the key to which the alias is bound is returned. |
Algorithm | string | AES_GCM | The encryption algorithm. |
PaddingMode | string | PKCS7_PADDING | The padding mode. This parameter returns a valid value only when Algorithm is set to AES_CBC or AES_ECB. In other cases, an empty value is returned. |
RequestId | string | 475f1620-b9d3-4d35-b5c6-3fbdd941423d | The ID of the request, which is used to locate and troubleshoot issues. |
Error codes
For a list of error codes, see Service error codes.