View a markdown version of this page

AWS Encryption SDK for Go 範例程式碼 - AWS Encryption SDK

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

AWS Encryption SDK for Go 範例程式碼

下列範例顯示使用 AWS Encryption SDK for Go 進行程式設計時所使用的基本編碼模式。具體而言,您會執行個體化 AWS Encryption SDK 和材料提供者程式庫。然後,在呼叫每個方法之前,您可以執行個體化定義方法輸入的物件。

如需示範如何在 中設定選項的範例 AWS Encryption SDK,例如指定替代演算法套件和限制加密的資料金鑰,請參閱 GitHub 上 aws-encryption-sdk 儲存庫中的 Go 範例

在 AWS Encryption SDK for Go 中加密和解密資料

此範例顯示加密和解密資料的基本模式。它會使用受到一個 AWS KMS 包裝金鑰保護的資料金鑰來加密少量資料。

步驟 1:執行個體化 AWS Encryption SDK。

您將使用 中的方法來 AWS Encryption SDK 加密和解密資料。

import ( "context" mpl "aws/aws-cryptographic-material-providers-library/releases/go/mpl/awscryptographymaterialproviderssmithygenerated" mpltypes "aws/aws-cryptographic-material-providers-library/releases/go/mpl/awscryptographymaterialproviderssmithygeneratedtypes" client "github.com/aws/aws-encryption-sdk/awscryptographyencryptionsdksmithygenerated" esdktypes "github.com/aws/aws-encryption-sdk/awscryptographyencryptionsdksmithygeneratedtypes" "github.com/aws/aws-sdk-go-v2/config" "github.com/aws/aws-sdk-go-v2/service/kms" ) encryptionClient, err := client.NewClient(esdktypes.AwsEncryptionSdkConfig{}) if err != nil { panic(err) }
步驟 2:建立 AWS KMS 用戶端。
cfg, err := config.LoadDefaultConfig(context.TODO()) if err != nil { panic(err) } kmsClient := kms.NewFromConfig(cfg, func(o *kms.Options) { o.Region = KmsKeyRegion })
選用:建立您的加密內容。
encryptionContext := map[string]string{ "encryption": "context", "is not": "secret", "but adds": "useful metadata", "that can help you": "be confident that", "the data you are handling": "is what you think it is", }
步驟 3:執行個體化材料提供者程式庫。

您將使用材料提供者程式庫中的方法來建立 keyring,以指定哪些金鑰保護您的資料。

matProv, err := mpl.NewClient(mpltypes.MaterialProvidersConfig{}) if err != nil { panic(err) }
步驟 4:建立 AWS KMS keyring。

若要建立 keyring,請使用 keyring 輸入物件呼叫 keyring 方法。此範例使用 CreateAwsKmsKeyring方法並指定一個 KMS 金鑰。kmsKeyId 變數代表您提供的 KMS 金鑰的金鑰 ARN。

awsKmsKeyringInput := mpltypes.CreateAwsKmsKeyringInput{ KmsClient: kmsClient, KmsKeyId: kmsKeyId, } awsKmsKeyring, err := matProv.CreateAwsKmsKeyring(context.Background(), awsKmsKeyringInput) if err != nil { panic(err) }
步驟 5:加密純文字。
res, err := encryptionClient.Encrypt(context.Background(), esdktypes.EncryptInput{ Plaintext: []byte(exampleText), EncryptionContext: encryptionContext, Keyring: awsKmsKeyring, }) if err != nil { panic(err) } ciphertext := res.Ciphertext
步驟 6:使用您在加密時使用的相同 keyring 來解密加密的資料。
decryptOutput, err := encryptionClient.Decrypt(context.Background(), esdktypes.DecryptInput{ Ciphertext: ciphertext, // Provide the encryption context that was supplied to the encrypt method EncryptionContext: encryptionContext, Keyring: awsKmsKeyring, }) if err != nil { panic(err) } decrypted := decryptOutput.Plaintext