調用GenerateDataKey介面產生資料密鑰。
使用說明
概述
本介面通過隨機數產生器產生資料密鑰,使用KMS密鑰的初始版本對資料祕密金鑰加密,並返回資料密鑰的明文和密文。您可以使用返回的資料密鑰明文(Plaintext),在KMS之外對資料進行加密。請儲存資料密鑰密文(CiphertextBlob)、初始向量(Iv)、密碼編譯演算法(Algorithm)和認證資料(Aad),以便後續對資料進行解密。
關於密鑰規格以及加密模式的詳細資料,請參見密鑰管理類型和密鑰規格。
對資料祕密金鑰加密時僅支援GCM加密模式。
資料金鑰產製原料由KMS通過高品質的隨機數產生器產生,與加密它的KMS密鑰材料內容無關。
和AdvanceGenerateDataKey的區別
GenerateDataKey和AdvanceGenerateDataKey都用於產生資料密鑰,區別為:
GenerateDataKey:加密時使用密鑰的初始版本,加密後您需要儲存資料密鑰密文(CiphertextBlob)、初始向量(Iv)、密碼編譯演算法(Algorithm)和認證資料(Aad),然後使用Decrypt或AdvanceDecrypt解密。
AdvanceGenerateDataKey:僅當密鑰為軟體密鑰管理執行個體的對稱金鑰時支援使用該介面。加密時使用密鑰的主要版本,加密後您需要儲存資料密鑰密文(CiphertextBlob)和認證資料(Aad),然後使用AdvanceDecrypt解密。
重要如果密鑰為軟體密鑰管理執行個體的對稱金鑰,且開啟了自動輪轉,產生資料密鑰時請使用AdvanceGenerateDataKey,以避免輪轉功能不生效。關於密鑰輪轉的相關內容,請參見密鑰輪轉。
請求參數
名稱 | 類型 | 是否必選 | 樣本值 | 描述 |
KeyId | string | 是 | key-hzz62f1cb66fa42qo**** | 密鑰的通用唯一識別碼。該參數也可以被指定為密鑰別名。 |
NumberOfBytes | int | 是 | 32 | 產生的資料密鑰的長度。 |
Aad | binary | 否 | 位元據 | 對資料祕密金鑰加密時使用的GCM加密模式認證資料。 重要 對資料祕密金鑰加密時僅支援GCM加密模式。如果指定了該參數,調用Decrypt解密時需要指定相同的參數。 |
響應資料
名稱 | 類型 | 樣本值 | 描述 |
KeyId | string | key-hzz62f1cb66fa42qo**** | 密鑰的通用唯一識別碼。如果請求中的KeyId參數使用的是密鑰別名,在響應中會返回對應密鑰的通用唯一識別碼。 |
Iv | bytes | 位元據 | 加密資料密鑰時使用的初始向量。 說明 調用Decrypt對資料密鑰解密時必須傳入正確的Iv才能成功解密。 |
Plaintext | bytes | 二進位明文 | 資料密鑰明文。 |
CiphertextBlob | bytes | 二進位密文 | 資料密鑰密文。 |
Algorithm | string | AES_GCM | 密碼編譯演算法。 |
RequestId | string | 475f1620-b9d3-4d35-b5c6-3fbdd941423d | 本次調用請求的ID,是由阿里雲為該請求產生的唯一識別碼,可用於排查和定位問題。 |
錯誤碼
訪問公用錯誤碼查看更多錯誤碼。