tencent cloud

密钥管理系统

产品简介
产品概述
产品优势
应用场景
基本概念
购买指南
计费概述
购买方式
续费说明
欠费说明
控制台指南
入门概述
密钥管理
访问控制
审计
TCCLI 管理指南
操作总览
创建密钥
查看密钥
编辑密钥
启用禁用密钥
密钥轮换
对称密钥加解密
非对称密钥解密
删除密钥
实践教程
对称加解密
非对称加解密
KMS 后量子密码实践
外部密钥导入
指数回退策略应对服务限频
云产品集成 KMS 实现透明加密
API 文档
History
Introduction
API Category
Key APIs
Making API Requests
Asymmetric Key APIs
Data Types
Error Codes
服务等级协议
常见问题
一般性问题
开发接入相关问题
KMS 政策
隐私政策
数据处理和安全协议
联系我们
词汇表

GenerateDataKey

PDF
聚焦模式
字号
最后更新时间: 2026-03-18 14:14:22

1. API Description

Domain name for API request: kms.intl.tencentcloudapi.com.

This API generates a data key, which you can use to encrypt local data.

A maximum of 150 requests can be initiated per second for this API.

We recommend you to use API Explorer
Try it
API Explorer provides a range of capabilities, including online call, signature authentication, SDK code generation, and API quick search. It enables you to view the request, response, and auto-generated examples.

2. Input Parameters

The following request parameter list only provides API request parameters and some common parameters. For the complete common parameter list, see Common Request Parameters.

Parameter Name Required Type Description
Action Yes String Common Params. The value used for this API: GenerateDataKey.
Version Yes String Common Params. The value used for this API: 2019-01-18.
Region Yes String Common Params. For more information, please see the list of regions supported by the product.
KeyId Yes String Globally unique CMK ID
KeySpec No String Specifies the encryption algorithm and size of the DataKey. Valid values: AES_128, AES_256. Either KeySpec or NumberOfBytes must be specified.
NumberOfBytes No Integer Length of the DataKey. If both NumberOfBytes and KeySpec are specified, NumberOfBytes will prevail. Minimum value: 1; maximum value: 1024. Either KeySpec or NumberOfBytes must be specified.
EncryptionContext No String JSON string of key-value pair. If this field is used, the same string should be entered when the returned DataKey is decrypted.
EncryptionPublicKey No String PEM-encoded public key (2048-bit RSA/SM2 key), which can be used to encrypt the Plaintext returned. If this field is left empty, the Plaintext will not be encrypted.
EncryptionAlgorithm No String Asymmetric encryption algorithm. Valid values: SM2 (C1C3C2 ciphertext is returned),SM2_C1C3C2_ASN1(C1C3C2 ASN1 ciphertext is returned),RSAES_PKCS1_V1_5,RSAES_OAEP_SHA_1, andRSAES_OAEP_SHA_256. This field is used in combination withEncryptionPublicKey` for encryption. If it is left empty, an SM2 public key will be used by default.
IsHostedByKms No Integer Indicates whether the data generated key is managed by KMS. 1 means the key is managed and saved by KMS. 0 means the key is not managed by KMS.
DataKeyName No String Name of the data key. required when IsHostedByKms is 1. optional when IsHostedByKms is 0 as KMS does not manage it.
Description No String Describes the data key. maximum 100 bytes.
HsmClusterId No String HSM cluster ID corresponding to the KMS exclusive edition. if HsmClusterId is specified, it indicates the root key is in this cluster and verifies whether KeyId corresponds to HsmClusterId.
Tags.N No Array of Tag Tag list. valid at that time when parameter IsHostedByKms=1 and the data key is hosted by kms.

3. Output Parameters

Parameter Name Type Description
KeyId String Globally unique CMK ID
Plaintext String If EncryptionPublicKey is left empty, a Base64-encoded ciphertext will be returned. To get the plaintext, you need to decode the ciphertext first.
If EncryptionPublicKey is specified, this field will return the Base64-encoded ciphertext encrypted with the specified public key. To get the plaintext, you need to decode the ciphertext and upload the corresponding private key.
CiphertextBlob String Ciphertext of the data key, which should be kept by yourself. KMS does not host user data keys. You can call the Decrypt API to get the plaintext of the data key from CiphertextBlob.
DataKeyId String Globally unique id of the data key, returned when KMS hosting is enabled.
TagCode Integer Response code of the Tag operation. 0: success; 1: internal error; 2: business processing error.
TagMsg String Response of the Tag operation.
RequestId String The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.

4. Example

Example1 Generate Data Keys Example

Use the specified CMK to generate a data key.

Input Example

POST / HTTP/1.1
Host: kms.intl.tencentcloudapi.com
Content-Type: application/json
X-TC-Action: GenerateDataKey
<Common request parameters>

{
    "KeyId": "93866e69-9755-11ef-8e65-52540089bc41",
    "KeySpec": "AES_256",
    "NumberOfBytes": 32,
    "EncryptionContext": "{\"key1\":\"value1\"}",
    "EncryptionPublicKey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoEcz****srLVydfJiHQuh2Jr9lMspgK58UVMJTvQCAU+Hztyhd6Aw==\n-----END PUBLIC KEY-----",
    "EncryptionAlgorithm": "SM2"
}

Output Example

{
    "Response": {
        "CiphertextBlob": "GPJUsGlmPcSjHKIktXGyzn33yestz+7NteW36M6FuL8hPfJ1xVfdO6Akr8sF69x3yBXMwto4njumJMIsi9WKow==-k-XqqalxTyNKIC1rITRePFGQ==-k-xAL9z9eXIHV/p+WT1RsHP3dm6f43bkomXjwmvWdMXH+JQoFORTThfXgcRh1f9lPNLENK4+fCOiQVG1VvLdA0RvcuRvU=",
        "KeyId": "93866e69-9755-11ef-8e65-52540089bc41",
        "Plaintext": "q+EouJ/tGeiZIo9/tIl2baxQOBFxcN0PNn7F6EIEvpDR6kvQmHohD5PTbUCKPkct6K8jOiYpbuaWZthxco0phMRSE4+HpB17rX4jmlW8pw3eHWOZo8yRyq/c7RVVo0+DtZofszwhMirQyjcBTJWhLt7xywtE5zqhDjngeEktAEw=",
        "RequestId": "044e823a-7a0c-4603-b03c-e99be5df998d"
    }
}

5. Developer Resources

SDK

TencentCloud API 3.0 integrates SDKs that support various programming languages to make it easier for you to call APIs.

Command Line Interface

6. Error Code

The following only lists the error codes related to the API business logic. For other error codes, see Common Error Codes.

Error Code Description
FailedOperation.EncryptionError Encryption failed.
FailedOperation.TaggingError Tagging error.
InternalError Internal error.
InvalidParameter Invalid parameter.
InvalidParameterValue.DataKeyNameAlreadyExists The data key name already exists.
InvalidParameterValue.InvalidDataKeyName Invalid data key name.
InvalidParameterValue.InvalidHsmClusterId Invalid HSM cluster ID.
InvalidParameterValue.InvalidKeyId Invalid KeyId.
InvalidParameterValue.InvalidKeyUsage Incorrect KeyUsage parameter.
InvalidParameterValue.InvalidType Incorrect Type parameter.
InvalidParameterValue.TagKeysDuplicated Duplicate tag key.
InvalidParameterValue.TagsNotExisted The tag key or tag value does not exist.
LimitExceeded.CmkLimitExceeded The number of CMKs has reached the upper limit.
LimitExceeded.DataKeyLimitExceeded DataKey exceeds the upper limit.
ResourceUnavailable.CmkDisabled The CMK has been disabled.
ResourceUnavailable.CmkNotFound The CMK does not exist.
ResourceUnavailable.KeyPendingDelete The key is not available as it’s pending deleted.
UnauthorizedOperation Unauthorized operation.

帮助和支持

本页内容是否解决了您的问题?

填写满意度调查问卷,共创更好文档体验。

文档反馈