View a markdown version of this page

AWS Encryption SDK código de ejemplo para Go - AWS Encryption SDK

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

AWS Encryption SDK código de ejemplo para Go

Los siguientes ejemplos muestran los patrones de codificación básicos que se utilizan al programar con AWS Encryption SDK for Go. Concretamente, instancias la biblioteca de proveedores de materiales AWS Encryption SDK y la biblioteca. A continuación, antes de llamar a cada método, instancias el objeto que define la entrada del método.

Para ver ejemplos que muestran cómo configurar las opciones del AWS Encryption SDK, como especificar un conjunto de algoritmos alternativo y limitar las claves de datos cifradas, consulte los ejemplos de Go que se encuentran en el repositorio aws-encryption-sdk en. GitHub

Cifrar y descifrar datos en el AWS Encryption SDK para Go

En este ejemplo se muestra el patrón básico para cifrar y descifrar datos. Cifra una pequeña cantidad de datos con claves de datos que están protegidas por una AWS KMS clave de empaquetado.

Paso 1: Cree una instancia del. AWS Encryption SDK

Utilizará los métodos descritos en AWS Encryption SDK para cifrar y descifrar datos.

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) }
Paso 2: Crea un AWS KMS cliente.
cfg, err := config.LoadDefaultConfig(context.TODO()) if err != nil { panic(err) } kmsClient := kms.NewFromConfig(cfg, func(o *kms.Options) { o.Region = KmsKeyRegion })
Opcional: cree su contexto de cifrado.
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", }
Paso 3: Cree una instancia de la biblioteca del proveedor de materiales.

Utilizará los métodos de la biblioteca de proveedores de materiales para crear los conjuntos de claves que especifican qué claves protegen sus datos.

matProv, err := mpl.NewClient(mpltypes.MaterialProvidersConfig{}) if err != nil { panic(err) }
Paso 4: Crea un AWS KMS conjunto de claves.

Para crear el conjunto de claves, llame al método de conjunto de claves con el objeto de entrada del conjunto de claves. En este ejemplo, se utiliza el CreateAwsKmsKeyring método y se especifica una clave de KMS. La kmsKeyId variable representa la clave ARN de la clave de KMS que usted proporciona.

awsKmsKeyringInput := mpltypes.CreateAwsKmsKeyringInput{ KmsClient: kmsClient, KmsKeyId: kmsKeyId, } awsKmsKeyring, err := matProv.CreateAwsKmsKeyring(context.Background(), awsKmsKeyringInput) if err != nil { panic(err) }
Paso 5: Cifre el texto sin formato.
res, err := encryptionClient.Encrypt(context.Background(), esdktypes.EncryptInput{ Plaintext: []byte(exampleText), EncryptionContext: encryptionContext, Keyring: awsKmsKeyring, }) if err != nil { panic(err) } ciphertext := res.Ciphertext
Paso 6: Descifra tus datos cifrados con el mismo conjunto de claves que utilizaste para cifrarlos.
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