KMS實例SDK for C#
KMS實例SDK for C#幫助您通過簡單的編程訪問KMS實例API,實現加密解密、簽名驗簽和獲取憑據值的業務訴求。本文介紹如何安裝SDK以及如何調用接口進行加密解密、簽名驗簽和獲取憑據值。
背景信息
KMS提供了多種類型的開發工具(SDK),請您在使用前先了解各SDK的使用場景。更多信息,請參見SDK參考。
您可以訪問開源代碼倉庫,查看SDK源碼及代碼示例。
前提條件
已購買和啟用KMS實例。具體操作,請參見購買和啟用KMS實例。
已完成密鑰和憑據的創建。具體操作,請參見密鑰管理快速入門、密鑰管理快速入門、創建憑據。
說明如果您的業務不涉及憑據,則無需創建憑據。
已創建應用接入點并保存了Client Key、獲取KMS實例CA證書。具體操作,請參見創建應用接入點。
請確保應用程序運行環境可訪問KMS實例VPC地址。
業務場景
說明
應用程序運行環境和KMS實例在同一個地域,且屬于同一個VPC
默認應用程序運行環境和KMS實例間網絡互通,您無需配置。
應用程序運行環境和KMS實例在同一個地域,但屬于不同VPC
您需要配置多個VPC訪問同一個KMS實例,具體操作,請參見同地域多VPC訪問KMS實例。
應用程序運行環境和KMS實例在不同地域
您需要配置應用跨地域訪問KMS實例。具體操作,請參見應用跨地域訪問KMS實例。
環境準備
版本要求:.NET Framework 5.0及以上版本,或.NET Standard 2.0及以上版本。
安裝SDK
使用.Net CLI安裝SDK。
dotnet add package AlibabaCloud.Dkms.Gcs.Sdk
建議您安裝SDK的最新版本,關于版本的更多信息,請參見開源代碼倉庫。
初始化SDK
使用C# SDK發起KMS實例API請求,您需要初始化一個Client實例。
using System;
AlibabaCloud.Dkms.Gcs.OpenApi.Models.Config config = new AlibabaCloud.Dkms.Gcs.OpenApi.Models.Config
{
ClientKeyFile = "your client key file path",
Password = Environment.GetEnvironmentVariable("your client key password"),
Endpoint = "<your KMS Instance Id>.cryptoservice.kms.aliyuncs.com",
CaFilePath = "path/to/DKMSInstanceCACertificates"
};
var client = new AlibabaCloud.Dkms.Gcs.Sdk.Client(config);
使用已初始化的客戶端調用KMS實例API
初始化Client后,您可以通過Client調用KMS實例API,本文介紹如下使用場景和代碼示例。關于KMS實例API的詳細信息,請參見API概覽。
調用Encrypt接口使用對稱密鑰加密數據
詳細代碼示例,請參見原始代碼。
//密鑰的ID或別名(Alias)。 string keyId = "your-keyId"; //待加密數據。 byte[] plaintext = your-plaintext; AlibabaCloud.Dkms.Gcs.Sdk.Models.EncryptRequest request = new AlibabaCloud.Dkms.Gcs.Sdk.Models.EncryptRequest { Plaintext = plaintext, KeyId = keyId, }; var encryptResponse = client.Encrypt(request); //加密數據。 byte[] cipherData = encryptResponse.CiphertextBlob; //Cipher初始向量,用于解密數據。 byte[] iv = encryptResponse.Iv; //請求ID。 string requestId = encryptResponse.RequestId;
調用Decrypt接口使用對稱密鑰解密密文
詳細代碼示例,請參見原始代碼。
//密鑰的ID或別名(Alias)。 string keyId = "your-keyId"; byte[] ciphertextBlob = your-ciphertextBlob; byte[] iv = your-iv; AlibabaCloud.Dkms.Gcs.Sdk.Models.DecryptRequest request = new AlibabaCloud.Dkms.Gcs.Sdk.Models.DecryptRequest { KeyId = keyId, CiphertextBlob = ciphertextBlob, Iv = iv, }; var decryptResponse = client.Decrypt(request); //原始數據。 byte[] plaintext = decryptResponse.Plaintext; //請求ID。 string requestId = decryptResponse.RequestId;
調用Sign接口使用非對稱密鑰進行數字簽名
詳細代碼示例,請參見原始代碼。
//密鑰的ID或別名(Alias)。 string keyId = "your-keyId"; //待簽名數據。 byte[] message = your-message ; AlibabaCloud.Dkms.Gcs.Sdk.Models.SignRequest request = new AlibabaCloud.Dkms.Gcs.Sdk.Models.SignRequest { KeyId = keyId, Message = message, }; var signResponse = client.Sign(request); //簽名值。 byte[] signature = signResponse.Signature; //請求ID。 string requestId = signResponse.RequestId;
調用Verify接口使用非對稱密鑰驗證數字簽名
詳細代碼示例,請參見原始代碼。
//密鑰的ID或別名(Alias)。 string keyId = "your-keyId"; //待簽名數據。 byte[] message = your - message; //簽名數據。 byte[] signature = your - signature; AlibabaCloud.Dkms.Gcs.Sdk.Models.VerifyRequest request = new AlibabaCloud.Dkms.Gcs.Sdk.Models.VerifyRequest { KeyId = keyId, Message = message, Signature = signature, }; var verifyResponse = client.Verify(request); //驗簽結果。 bool? value = verifyResponse.Value; //請求ID。 string requestId = verifyResponse.RequestId;
調用GetSecretValue接口獲取憑據值
詳細代碼示例,請參見原始代碼。
//KMS的憑據名稱。 string secretName = "your-secret-name"; AlibabaCloud.Dkms.Gcs.Sdk.Models.GetSecretValueRequest request = new AlibabaCloud.Dkms.Gcs.Sdk.Models.GetSecretValueRequest { SecretName = secretName, }; var getSecretValueResponse = client.GetSecretValue(request); //憑據值 string secretData = getSecretValueResponse.SecretData; //請求ID。 string requestId = getSecretValueResponse.RequestId;