产生数据密钥
<p><span style="font-size:18px"><strong>产生数据密钥:GenerateDataKey</strong></span></p>
<p><strong>描述</strong></p>
<p>利用一个主密钥产生一个数据密钥,且可以用其来对本地数据进行加解密操作。</p>
<p>plainText字段返回数据密钥明文,cipherTextBlob字段返回数据密钥密文。</p>
<p><strong>注意事项</strong></p>
<ul>
<li>当需要利用数据密钥对本地磁盘大量业务数据进行加解密时,您可以利用如下方式进行:
<ol>
<li>首先通过调用我们提供的API接口<strong>generateDataKey</strong>产生数据密钥;</li>
<li>获取API接口返回的plainText(数据密钥明文),对本地数据进行加密,然后删除数据密钥明文;</li>
<li>将加密后的数据及API接口返回的数据密钥密文进行本地持久化,实现明文不落地。</li>
</ol>
</li>
<li>当keySpec和numberOfBytes都不填写时,默认keySpec为AES_256。</li>
<li>同时指定numberOfBytes和keySpec时,以numberOfBytes为准。</li>
</ul>
<p><strong>请求参数</strong></p>
<table border="1">
<thead>
<tr>
<th>
<p>名称</p>
</th>
<th style="width:67px">
<p>类型</p>
</th>
<th style="width:86px">
<p>是否必需</p>
</th>
<th style="width:437px">
<p>描述</p>
</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<p>keyId</p>
</td>
<td style="width:67px">
<p>String</p>
</td>
<td style="width:86px">
<p>是</p>
</td>
<td style="width:437px">
<p>密钥的全局唯一标识符</p>
</td>
</tr>
<tr>
<td>
<p>keySpec</p>
</td>
<td style="width:67px">
<p>String</p>
</td>
<td style="width:86px">
<p>否</p>
</td>
<td style="width:437px">
<p>产生数据密钥的长度与类型,AES_256表示256比特的对称密钥,AES_128表示128比特的对称密钥</p>
</td>
</tr>
<tr>
<td>
<p>numberOfBytes</p>
</td>
<td style="width:67px">
<p>String</p>
</td>
<td style="width:86px">
<p>否</p>
</td>
<td style="width:437px">
<p>产生数据密钥的长度,以字节为单位。有效值:1到1024</p>
</td>
</tr>
<tr>
<td>
<p>encryptionContext</p>
</td>
<td style="width:67px">
<p>String</p>
</td>
<td style="width:86px">
<p>否</p>
</td>
<td style="width:437px">
<p>附加盐值,如果指定了该参数,则在调用Decrypt 时需要提供同样的参数</p>
</td>
</tr>
</tbody>
</table>
<p><strong>返回参数</strong></p>
<table border="1">
<thead>
<tr>
<th>
<p>名称</p>
</th>
<th>
<p>类型</p>
</th>
<th>
<p>描述</p>
</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<p>code</p>
</td>
<td>
<p>String</p>
</td>
<td>
<p>返回码,成功返回"SUCCESS"</p>
</td>
</tr>
<tr>
<td>
<p>cipherTextBlob</p>
</td>
<td>
<p>String</p>
</td>
<td>
<p>加密后的数据密钥Data key</p>
</td>
</tr>
<tr>
<td>
<p>keyId</p>
</td>
<td>
<p>String</p>
</td>
<td>
<p>密钥的全局唯一标识符</p>
</td>
</tr>
<tr>
<td>
<p>plainText</p>
</td>
<td>
<p>String</p>
</td>
<td>
<p>数据密钥明文</p>
</td>
</tr>
<tr>
<td>
<p>requestId</p>
</td>
<td>
<p>String</p>
</td>
<td>
<p>当前请求ID</p>
</td>
</tr>
</tbody>
</table>
<p><strong>请求示例</strong></p>
<pre>
<code>https://kms-cn-shanghai.yun.pingan.com/?action=GenerateDataKey
&keyId=<cmkid>
&keySpec=<key spec>
&numberOfBytes=<number of bytes>
&encryptionContext=<your encryption context>
&<公共请求参数></code></pre>
<p><img src="data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==" /><strong>返回示例</strong></p>
<pre>
<code>{
"code": "SUCCESS",
"cipherTextBlob": "your data key cipher text blob ",
"plainText": "your data key plain text",
"keyId": "your key id",
"requestId": "1d2f32cf-d75f-48c0-a9e4-05b82c6fe867"
}</code></pre>
<p> </p>
提交成功!非常感谢您的反馈,我们会继续努力做到更好!