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
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
CreateAwsKmsKeyringmétodo y se especifica una clave de KMS. LakmsKeyIdvariable 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