全部產品
Search
文件中心

:GenerateAndExportDataKey - 產生一個資料密鑰並加密匯出

更新時間:Jul 29, 2025

隨機產生一個資料密鑰,通過您指定的主要金鑰(CMK)和公開金鑰加密後,返回CMK加密資料密鑰的密文和公開金鑰加密資料密鑰的密文。

介面說明

注意事項

  • RAM 使用者或 RAM 角色調用該 OpenAPI 需要被授與權限策略詳情,請參見存取控制

  • 本介面可以通過共用網關或專屬網關調用。詳細介紹,請參見阿里雲 SDK

    • 共用網關:通過公網、VPC 網域名稱訪問 KMS,該方式需要開啟公網開關。具體操作,請參見通過公網訪問 KMS 執行個體中的密鑰

    • 專屬網關:通過 KMS 私網地址(<YOUR_KMS_INSTANCE_ID>.cryptoservice.kms.aliyuncs.com)訪問 KMS。

詳細說明

建議您使用以下方式將資料密鑰匯入到密碼模組中,用於資料加密和資料解密:

1.調用 GenerateAndExportDataKey 介面,獲得 KMS 祕密金鑰加密和指定公開金鑰加密的資料密鑰。

2.將 KMS 祕密金鑰加密資料密鑰得到的密文儲存在 KMS,或者雲資料庫等儲存服務中,用於密鑰的備份和恢複。

3.將公開金鑰加密資料密鑰的密文,匯入到公開金鑰對應私密金鑰所在的密碼模組,實現 KMS 到密碼模組的密鑰分發,使用資料金鑰組相應的資料進行加解密運算。

說明

在請求中指定的 KMS 密鑰,僅會被用作資料密鑰的加密,和資料密鑰的產生沒有關係。KMS 也不會記錄或儲存隨機產生的資料密鑰,您需要負責記錄資料密鑰或資料密鑰的密文。

調試

您可以在OpenAPI Explorer中直接運行該介面,免去您計算簽名的困擾。運行成功後,OpenAPI Explorer可以自動產生SDK程式碼範例。

調試

授權資訊

當前API暫無授權資訊透出。

請求參數

名稱

類型

必填

描述

樣本值

KeyId

string

密鑰的 ID,也可以指定為密鑰別名或密鑰資源名稱(ARN)。關於別名的詳細介紹,請參見管理密鑰別名

說明

訪問其他阿里雲帳號下的密鑰時,必須輸入密鑰 ARN。密鑰 ARN 的格式為acs:kms:${region}:${account}:key/${keyid}

1234abcd-12ab-34cd-56ef-12345678****

KeySpec

string

指定產生的資料密鑰的長度,取值:

  • AES_256:256 位的對稱金鑰。

  • AES_128:128 位的對稱金鑰。

說明

建議使用 KeySpec 或者 NumberOfBytes 來指定資料密鑰長度。如果兩者都不指定,KMS 產生 256 位的資料密鑰;如果兩者都被指定,KMS 會忽略 KeySpec 參數。

AES_256

NumberOfBytes

integer

指定產生的資料密鑰的長度。

取值:1~1024。

單位:位元組。

32

EncryptionContext

object

key/value 對的 JSON 字串,如果指定了該參數,則在解密或者使用其他密鑰轉加密時需要提供同樣的參數,詳情請參見 EncryptionContext 說明

{"Example":"Example"}

PublicKeyBlob

string

Base 64 編碼的公開金鑰。

MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAndKfC2ReLL2+y8a0+ZBBeAft/uBYo86GZiYJuflqgUzKxpyuvlo3uQkBv6b+nx+0tz8g8v7GhpPWMSW5L9mNHYsvYFsa7jTxsYdt17yj6GlUHPuMIs8hr5qbwl38IHU1iIa7nYWwE2fb3ePOvLDACRJVgGpU0yxioW80d2QD+9aU4jF5dlAahcfgsNzo2CXzCUc1+xbmNuq7Rp+H9VJB9dyYOwqnW3RhOLBo21FzpORapf0UiRlrHRpk1V6ez+aE1dofaYh/9bh0m6ioxj7j5hpZbWccuEZTMBKd+cbuBkRhJzc6Tti6qwZbDiu4fUwbZS0Tqpuo1UadiyxMW********

WrappingKeySpec

string

PublicKeyBlob 密鑰的類型。密鑰類型詳情,請參見非對稱金鑰簡介
取值:

  • RSA_2048

  • EC_SM2

RSA_2048

WrappingAlgorithm

string

使用 PublicKeyBlob 所指定的公開金鑰,加密(Wrap)資料密鑰時的密碼編譯演算法。演算法詳情,請參見 AsymmetricDecrypt
取值:

  • RSAES_OAEP_SHA_256

  • RSAES_OAEP_SHA_1

  • SM2PKE

RSAES_OAEP_SHA_256

DryRun

string

是否開啟 DryRun 模式。

  • true:開啟

  • false(預設值):關閉

DryRun 模式用於測試 API 呼叫,驗證您是否具有相應資源的許可權,以及請求參數是否配置正確。DryRun 模式開啟後,KMS 會始終返回失敗並提示失敗原因。失敗原因包含如下:

  • DryRunOperationError:不配置 DryRun 參數時,請求會成功。

  • ValidationError:請求中指定的參數有誤。

  • AccessDeniedError:您無權在 KMS 資源上執行該操作。

false

返回參數

名稱

類型

描述

樣本值

object

KeyVersionId

string

用於加密明文的密鑰版本標識符。是指定 KMS 密鑰的主要版本。

2ab1a983-7072-4bbc-a582-584b5bd8****

KeyId

string

金鑰識別碼。如果請求中的 KeyId 參數使用的是密鑰別名、密鑰 ARN,在響應中也會返回金鑰識別碼。

599fa825-17de-417e-9554-bb032cc6****

CiphertextBlob

string

資料密鑰被指定 KMS 密鑰的主要版本加密後的密文。

ODZhOWVmZDktM2QxNi00ODk0LWJkNGYtMWZjNDNmM2YyYWJmS7FmDBBQ0BkKsQrtRnidtPwirmDcS0ZuJCU41xxAAWk4Z8qsADfbV0b+i6kQmlvj79dJdGOvtX69Uycs901qOjop4bTS****

RequestId

string

本次調用請求的 ID,是由阿里雲為該請求產生的唯一識別碼,可用於排查和定位問題。

7021b6ec-4be7-4d3c-8a68-1e85d4d515a0

ExportedDataKey

string

公開金鑰加密保護匯出的資料密鑰。

BQKP+1zK6+ZEMxTP5qaVzcsgXtWplYBKm0NXdSnB5FzliFxE1bSiu4dnEIlca2JpeH7yz1/S6fed630H+hIH6DoM25fTLNcKj+mFB0Xnh9m2+HN59Mn4qyTfcUeadnfCXSWcGBouhXFwcdd2rJ3n337bzTf4jm659gZu3L0i6PLuxM9p7mqdwO0cKJPfGVfhnfMz+f4alMg79WB/NNyE2lyX7/qxvV49ObNrrJbKSFiz8Djocaf0IESNLMbfYI5bXjWkJlX92DQbKhibtQW8ZOJ//ZC6t0AWcUoKL6QDm/dg5koQalcleRinpB+QadFm894sLbVZ9+N4GVs*******

樣本

正常返回樣本

JSON格式

{
  "KeyVersionId": "2ab1a983-7072-4bbc-a582-584b5bd8****",
  "KeyId": "599fa825-17de-417e-9554-bb032cc6****",
  "CiphertextBlob": "ODZhOWVmZDktM2QxNi00ODk0LWJkNGYtMWZjNDNmM2YyYWJmS7FmDBBQ0BkKsQrtRnidtPwirmDcS0ZuJCU41xxAAWk4Z8qsADfbV0b+i6kQmlvj79dJdGOvtX69Uycs901qOjop4bTS****",
  "RequestId": "7021b6ec-4be7-4d3c-8a68-1e85d4d515a0",
  "ExportedDataKey": "BQKP+1zK6+ZEMxTP5qaVzcsgXtWplYBKm0NXdSnB5FzliFxE1bSiu4dnEIlca2JpeH7yz1/S6fed630H+hIH6DoM25fTLNcKj+mFB0Xnh9m2+HN59Mn4qyTfcUeadnfCXSWcGBouhXFwcdd2rJ3n337bzTf4jm659gZu3L0i6PLuxM9p7mqdwO0cKJPfGVfhnfMz+f4alMg79WB/NNyE2lyX7/qxvV49ObNrrJbKSFiz8Djocaf0IESNLMbfYI5bXjWkJlX92DQbKhibtQW8ZOJ//ZC6t0AWcUoKL6QDm/dg5koQalcleRinpB+QadFm894sLbVZ9+N4GVs*******"
}

錯誤碼

HTTP status code

錯誤碼

錯誤資訊

描述

400 InvalidParameter The specified parameter is not valid. 參數非法。
500 InternalFailure InternalFailure
404 Forbidden.KeyNotFound The specified Key is not found. 指定的密鑰不存在。
404 InvalidAccessKeyId.NotFound The Access Key ID provided does not exist in our records.

訪問錯誤中心查看更多錯誤碼。

變更歷史

更多資訊,參考變更詳情