全部产品
阿里云办公

GenerateDataKey

更新时间:2018-04-08 10:16:44

描述

生成一个密钥,你可以用这个密钥进行本地数据的加密。
这个API在Plaintext字段返回一个明文密钥,在CiphertextBlob字段返回一个加密后的密钥。

说明

  • 我们建议您使用以下方式在本地进行数据加密:
    1. 调用本文API GenerateDataKey,获得数据加密密钥。
    2. 在返回结果中,使用Plaintext中的明文密钥对本地加密数据,然后删除内存中的明文密钥。
    3. 在本地存储CiphertextBlob中返回的加密过的密钥,和加密后的数据。
  • 在本地解密数据:
    1. 调用Decrypt,将CiphertextBlob返回的加密过的密钥,解密为Plaintext密钥。
    2. Plaintext密钥为本地数据解密,再删除本地存储中的Plaintext密钥。
  • KeySpecNumberOfBytes都不填写时,默认KeySpec为AES_256。
  • 同时指定NumberOfBytesKeySpec时,以NumberOfBytes为准。

请求参数

名称 类型 是否必需 描述
KeyId String 主密钥(CMK)的全局唯一标识符。该API支持使用别名,详情见别名使用说明
KeySpec String 产生数据密钥的长度与类型,AES_256表示256比特的对称密钥,AES_128表示128比特的对称密钥。
NumberOfBytes Integer 产生数据密钥的长度,以字节为单位。有效值:1 到 1024。
EncryptionContext String to string map key/value对的json字符串,如果指定了该参数,则在调用Decrypt 时需要提供同样的参数,参见EncryptionContext

返回参数

名称 类型 描述
KeyId String CMK的全局唯一标识符。如果请求使用的别名,此处返回的是别名对应的主密钥ID。
Plaintext String 明文 data key。
CiphertextBlob String 加密过的 data key。

示例

请求示例

  1. https://kms.cn-hangzhou.aliyuncs.com/?Action=GenerateDataKey
  2. &KeyId=<cmkid or aliasname>
  3. &KeySpec=AES_256
  4. &EncryptionContext={"Example":"Example"}
  5. &<公共请求参数>

返回示例

JSON 格式

  1. //json response
  2. {
  3. "CiphertextBlob": "CiphertextBlob",
  4. "KeyId": "599fa825-17de-417e-9554-bb032cc626f0",
  5. "Plaintext": "Plaintext",
  6. "RequestId": "7021b6ec-4be7-4d3c-8a68-1e85d4d515a0"
  7. }

XML 格式

  1. //xml response
  2. <KMS>
  3. <CiphertextBlob>CiphertextBlob</CiphertextBlob>
  4. <KeyId>599fa825-17de-417e-9554-bb032cc626f0</KeyId>
  5. <Plaintext>Plaintext</Plaintext>
  6. <RequestId>7021b6ec-4be7-4d3c-8a68-1e85d4d515a0</RequestId>
  7. </KMS>
本文导读目录