加密数据密钥
功能介绍
加密数据密钥,用指定的主密钥加密数据密钥。
URI
请求消息
| 参数 | 是否必选 | 参数类型 | 描述 |
|---|---|---|---|
| X-Auth-Token | 是 | String | 用户Token。 通过调用IAM服务获取用户Token接口获取(响应消息头中X-Subject-Token的值)。 |
| Content-Type | 是 | String | application/json |
| 参数 | 是否必选 | 参数类型 | 描述 |
|---|---|---|---|
| key_id | 是 | String | Key_id内容可使用密钥ID、别名(key_alias)或者URN。
|
| encryption_context | 否 | Object | 一系列key-value键值对,用于记录资源上下文信息,用于保护数据的完整性,不应包含敏感信息,最大长度为8192。 当在加密时指定了该参数时,解密密文时,需要传入相同的参数,才能正确的解密。 例如:{"Key1":"Value1","Key2":"Value2"} |
| plain_text | 是 | String | DEK明文以及DEK明文的摘要(SHA256算法生成的32字节的字符串)拼接而成的16进制字符串。 具体请参见示例。 |
| datakey_plain_length | 是 | String | DEK明文字节长度,取值范围为1~1024。 |
| sequence | 否 | String | 请求消息序列号,36字节序列号。 例如:919c82d4-8046-4722-9094-35c3c6524cff |
响应消息
| 参数 | 是否必选 | 参数类型 | 描述 |
|---|---|---|---|
| key_id | 是 | String | 密钥ID。 |
| cipher_text | 是 | String | DEK密文16进制,两位表示1byte。 |
| datakey_length | 是 | String | DEK字节长度。 |
示例
如下以密钥ID为“0d0466b0-e727-4d9c-b35d-f84bb474a37f”的用户主密钥生成的512bit的数据密钥明文值为“7549d9aea901767bf3c0b3e14b10722eaf6f59053bbd82045d04e075e809a0fe6ccab48f8e5efe74e4b18ff0512525e527b10331100f357bf42125d8d5ced94f”,该数据密钥明文可通过调用创建数据密钥接口得到。
该数据密钥明文的摘要为“fbc8ac72b0785ca7fe33eb6776ce3990b11e32b299d9c0a9ee0305fb9540f797”,计算摘要的方法如下所示:
//计算摘要
public static byte[] sha256(byte[] cmkData) {
byte[] digest = new byte[0];
try {
MessageDigest md = MessageDigest.getInstance("SHA-256");
md.update(cmkData);
digest = md.digest();
} catch (Exception e) {
System.out.println("calculate digest failure, exception is " + e.toString());
}
return digest;
}
//将所得的摘要,转换成十六进制字符串
public static String bytesToHexString(byte[] digest) {
…
} 加密明文数据密钥明文值(plain_text参数),为数据密钥明文及其摘要拼接而成的十六进制字符串为“7549d9aea901767bf3c0b3e14b10722eaf6f59053bbd82045d04e075e809a0fe6ccab48f8e5efe74e4b18ff0512525e527b10331100f357bf42125d8d5ced94f fbc8ac72b0785ca7fe33eb6776ce3990b11e32b299d9c0a9ee0305fb9540f797”
- 请求样例
{ "key_id": "0d0466b0-e727-4d9c-b35d-f84bb474a37f", "plain_text": "7549d9aea901767bf3c0b3e14b10722eaf6f59053bbd82045d04e075e809a0fe6ccab48f8e5efe74e4b18ff0512525e527b10331100f357bf42125d8d5ced94f fbc8ac72b0785ca7fe33eb6776ce3990b11e32b299d9c0a9ee0305fb9540f797", "datakey_plain_length": "64" } - 响应样例
{ "key_id": "0d0466b0-e727-4d9c-b35d-f84bb474a37f", "cipher_text": "020098005273E14E6E8E95F5463BECDC27E80AF820B9FC086CB47861899149F67CF07DAFF2810B7D27BDF19AB7632488E0926A48DB2FC85BEA905119411B46244C5E6B8036C60A0B0B4842FFE6994518E89C19B1C1D688D9043BCD6053EA7BA0652642CE59F2543C80669139F4F71ABB9BD9A24330643034363662302D653732372D346439632D623335642D66383462623437346133376600000000D34457984F9730D57F228C210FD22CA6017913964B21D4ECE45D81092BB9112E", "datakey_length": "64" }或
{ "error": { "error_code": "KMS.XXXX", "error_msg": "XXX" } }