1. 接口描述
接口请求域名: kms.tencentcloudapi.com 。
本接口生成一个数据密钥,您可以用这个密钥进行本地数据的加密。
默认接口请求频率限制:100次/秒。
推荐使用 API Explorer
点击调试
API Explorer 提供了在线调用、签名验证、SDK 代码生成和快速检索接口等能力。您可查看每次调用的请求内容和返回结果以及自动生成 SDK 调用示例。
2. 输入参数
以下请求参数列表仅列出了接口请求参数和部分公共参数,完整公共参数列表见 公共请求参数。
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:GenerateDataKey。 |
Version | 是 | String | 公共参数,本接口取值:2019-01-18。 |
Region | 是 | String | 公共参数,详见产品支持的 地域列表。 |
KeyId | 是 | String | CMK全局唯一标识符 示例值:23e80852-1e38-11e9-b129-5cb9019b4b01 |
KeySpec | 否 | String | 指定生成Datakey的加密算法以及Datakey大小,AES_128或者AES_256。KeySpec 和 NumberOfBytes 必须指定一个 示例值:AES_256 |
NumberOfBytes | 否 | Integer | 生成的DataKey的长度,同时指定NumberOfBytes和KeySpec时,以NumberOfBytes为准。最小值为1, 最大值为1024。KeySpec 和 NumberOfBytes 必须指定一个 |
EncryptionContext | 否 | String | key/value对的json字符串,如果使用该字段,则返回的DataKey在解密时需要填入相同的字符串 |
EncryptionPublicKey | 否 | String | PEM 格式公钥字符串,支持 RSA2048 和 SM2 公钥,用于对返回数据中的 Plaintext 值进行加密。若为空,则不对 Plaintext 值加密。 |
EncryptionAlgorithm | 否 | String | 非对称加密算法,配合 EncryptionPublicKey 对返回数据进行加密。目前支持:SM2(以 C1C3C2 格式返回密文),SM2_C1C3C2_ASN1 (以 C1C3C2 ASN1 格式返回密文),RSAES_PKCS1_V1_5,RSAES_OAEP_SHA_1,RSAES_OAEP_SHA_256。若为空,则默认为 SM2。 示例值:SM2 |
3. 输出参数
参数名称 | 类型 | 描述 |
---|---|---|
KeyId | String | CMK的全局唯一标识 示例值:23e80852-1e38-11e9-b129-5cb9019b4b01 |
Plaintext | String | 若调用时未提供 EncryptionPublicKey,该字段值为生成的数据密钥 DataKey 的 Base64 编码的明文,需进行 Base64 解码以获取 DataKey 明文。 若调用时提供了 EncryptionPublicKey,则该字段值为使用 EncryptionPublicKey 公钥进行非对称加密后的 Base64 编码的密文。需在 Base64 解码后,使用用户上传的公钥对应的私钥进行进一步解密,以获取 DataKey 明文。 示例值:uW9wqntw+FAgnfsIrxOpOA== |
CiphertextBlob | String | 数据密钥DataKey加密后的密文,用户需要自行保存该密文,KMS不托管用户的数据密钥。可以通过Decrypt接口从CiphertextBlob中获取数据密钥DataKey明文 示例值:g2F8eQk44QrTbfj09TL17AZyFPgs8BTtZe2j27Wuw1YzTBCxnd0T/gwFQSasmtzxZi6mmvD7DCjCE+LxJmdhXQ==-k-fKVP3WIlGpg8m9LMW4jEkQ==-k-h/nUfRbaTUY7/KWXwuSK1Py+ZFRTK5WQiUz6yQE5XBFUN3UwPOUbl8P3A3caow2rlqTjUw== |
RequestId | String | 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。 |
4. 示例
示例1 生成数据密钥示例
使用指定的CMK生成Datakey。
输入示例
https://kms.tencentcloudapi.com/?Action=GenerateDataKey
&KeyId=23e80852-1e38-11e9-b129-5cb9019b4b01
&KeySpec=AES_256
&<公共请求参数>
输出示例
{
"Response": {
"RequestId": "fe11aa29-0cc2-4204-bfea-6ebb30cc00d7",
"KeyId": "23e80852-1e38-11e9-b129-5cb9019b4b01",
"Plaintext": "uW9wqntw+FAgnfsIrxOpOA==",
"CiphertextBlob": "g2F8eQk44QrTbfj09TL17AZyFPgs8BTtZe2j27Wuw1YzTBCxnd0T/gwFQSasmtzxZi6mmvD7DCjCE+LxJmdhXQ==-k-fKVP3WIlGpg8m9LMW4jEkQ==-k-h/nUfRbaTUY7/KWXwuSK1Py+ZFRTK5WQiUz6yQE5XBFUN3UwPOUbl8P3A3caow2rlqTjUw=="
}
}
5. 开发者资源
腾讯云 API 平台
腾讯云 API 平台 是综合 API 文档、错误码、API Explorer 及 SDK 等资源的统一查询平台,方便您从同一入口查询及使用腾讯云提供的所有 API 服务。
API Inspector
用户可通过 API Inspector 查看控制台每一步操作关联的 API 调用情况,并自动生成各语言版本的 API 代码,也可前往 API Explorer 进行在线调试。
SDK
云 API 3.0 提供了配套的开发工具集(SDK),支持多种编程语言,能更方便的调用 API。
- Tencent Cloud SDK 3.0 for Python: GitHub Gitee
- Tencent Cloud SDK 3.0 for Java: GitHub Gitee
- Tencent Cloud SDK 3.0 for PHP: GitHub Gitee
- Tencent Cloud SDK 3.0 for Go: GitHub Gitee
- Tencent Cloud SDK 3.0 for Node.js: GitHub Gitee
- Tencent Cloud SDK 3.0 for .NET: GitHub Gitee
- Tencent Cloud SDK 3.0 for C++: GitHub Gitee
- Tencent Cloud SDK 3.0 for Ruby: GitHub Gitee
命令行工具
6. 错误码
以下仅列出了接口业务逻辑相关的错误码,其他错误码详见 公共错误码。
错误码 | 描述 |
---|---|
FailedOperation.EncryptionError | 加密操作失败。 |
InternalError | 内部错误。 |
InvalidParameter | 参数错误。 |
InvalidParameterValue.InvalidKeyId | KeyId不合法。 |
ResourceUnavailable.CmkDisabled | CMK已被禁用。 |
ResourceUnavailable.CmkNotFound | CMK不存在。 |
ResourceUnavailable.KeyPendingDelete | 不可用密钥:密钥待删除。 |
UnauthorizedOperation | 未授权操作。 |