調用GenerateDataKeyPair接口生成非對稱的數據密鑰對。
使用說明
本接口通過隨機數生成器產生數據密鑰對,使用對稱密鑰的初始版本對數據密鑰對加密,并返回數據密鑰對的公鑰明文、私鑰明文、私鑰密文。您可以使用數據密鑰對,在KMS之外進行簽名驗簽。
請保存私鑰密文(PrivateKeyCiphertextBlob)、初始向量(Iv)、加密算法(Algorithm)、認證數據(Aad),以便后續使用Decrypt對私鑰密文進行解密。
KMS提供了如下接口,用于生成數據密鑰對,具體之間的區別請參見下表。
API | 使用場景 | API的返回數據 | 加密時的密鑰版本 | 解密時的API接口 |
GenerateDataKey | 加密的密鑰未設置自動輪轉,且您需要立即獲取私鑰明文。 | 公鑰明文、私鑰明文、私鑰密文。 | 密鑰的初始版本。 | |
GenerateDataKeyPairWithoutPlaintext | 加密的密鑰未設置自動輪轉,且您暫時不使用私鑰明文或者需要更高的安全性。 | 公鑰明文、私鑰密文,不返回私鑰明文。 | 密鑰的初始版本。 | |
AdvanceGenerateDataKeyPair | 加密的密鑰設置了自動輪轉,且您需要立即獲得私鑰明文。 說明 關于密鑰輪轉的相關內容,請參見密鑰輪轉。 | 公鑰明文、私鑰明文、私鑰密文。 | 密鑰的主版本。 | |
AdvanceGenerateDataKeyPairWithoutPlaintext | 加密的密鑰設置了自動輪轉,且您暫時不使用私鑰明文或者需要更高的安全性。 | 公鑰明文、私鑰密文,不返回私鑰明文。 | 密鑰的主版本。 |
注意事項
針對生成數據密鑰對的接口GenerateDataKeyPair、 GenerateDataKeyPairWithoutPlaintext、AdvanceGenerateDataKeyPair和AdvanceGenerateDataKeyPairWithoutPlaintext,一般情況下每個KMS實例,每次僅支持處理一個請求,請您控制好并發請求。如超出并發限制,KMS將返回429報錯(Concurrency Limit Exceeded)。
請求參數
名稱 | 類型 | 是否必選 | 示例值 | 描述 |
KeyId | string | 是 | key-hzz62f1cb66fa42qo**** | 密鑰的全局唯一標識符。本參數也可以被指定為密鑰別名。 說明 僅支持軟件密鑰管理實例中的對稱密鑰。 |
KeyPairSpec | string | 是 | RSA_2048 | 指定生成的數據密鑰對的類型。取值:
|
Aad | bytes | 否 | 二進制數據 | 對數據密鑰對加密時使用的GCM加密模式認證數據。 重要 如果指定了該參數,調用Decrypt解密時需要指定相同的參數。 |
KeyFormat | string | 是 | PEM | 生成的數據密鑰對格式。取值:
|
響應數據
名稱 | 類型 | 示例值 | 描述 |
KeyId | string | key-hzz62f1cb66fa42qo**** | 密鑰的全局唯一標識符。如果請求中的KeyId參數使用的是密鑰別名,在響應中會返回對應密鑰的全局唯一標識符。 |
Iv | bytes | 二進制數據 | 加密數據密鑰對時使用的初始向量。 說明 調用Decrypt對數據密鑰解密時必須傳入正確的Iv才能成功解密。 |
KeyPairSpec | string | RSA_2048 | 生成的數據密鑰對的類型。 |
PrivateKeyCiphertextBlob | bytes | 二進制數據 | 數據密鑰對的私鑰密文。 |
PrivateKeyPlaintext | bytes | 二進制數據 | 數據密鑰對的私鑰明文。
|
PublicKey | bytes | 二進制數據 | 數據密鑰對的公鑰明文。
|
Algorithm | string | AES_GCM | 加密算法。僅支持AES_GCM。 |
RequestId | string | 475f1620-b9d3-4d35-b5c6-3fbdd941423d | 本次調用請求的ID,是由阿里云為該請求生成的唯一標識符,可用于排查和定位問題。 |
錯誤碼
HTTP狀態碼 | 錯誤碼 | 錯誤信息 | 描述 |
429 | Rejected.Throttling | Concurrency Limit Exceeded. | 并發超過限制。 |
訪問公共錯誤碼查看更多錯誤碼。