View a markdown version of this page

AWS Encryption SDK per il codice di esempio Go - AWS Encryption SDK

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

AWS Encryption SDK per il codice di esempio Go

Gli esempi seguenti mostrano i modelli di codifica di base utilizzati durante la programmazione con AWS Encryption SDK for Go. In particolare, si crea un'istanza della libreria AWS Encryption SDK e dei fornitori di materiali. Quindi, prima di chiamare ciascun metodo, create un'istanza dell'oggetto che definisce l'input per il metodo.

Per esempi che mostrano come configurare le opzioni in AWS Encryption SDK, come specificare una suite di algoritmi alternativa e limitare le chiavi di dati crittografate, consulta gli esempi di Go nel repository aws-encryption-sdk su. GitHub

Crittografia e decrittografia dei dati in AWS Encryption SDK per Go

Questo esempio mostra il modello di base per la crittografia e la decrittografia dei dati. Crittografa una piccola quantità di dati con chiavi di dati protette da una chiave di wrapping. AWS KMS

Passaggio 1: istanziare il. AWS Encryption SDK

Utilizzerai i metodi indicati per crittografare e AWS Encryption SDK decrittografare i dati.

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) }
Passaggio 2: creare un client. AWS KMS
cfg, err := config.LoadDefaultConfig(context.TODO()) if err != nil { panic(err) } kmsClient := kms.NewFromConfig(cfg, func(o *kms.Options) { o.Region = KmsKeyRegion })
Facoltativo: crea il tuo contesto di crittografia.
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", }
Passaggio 3: crea un'istanza della libreria dei fornitori di materiali.

Utilizzerai i metodi della libreria dei fornitori di materiali per creare i portachiavi che specificano quali chiavi proteggono i tuoi dati.

matProv, err := mpl.NewClient(mpltypes.MaterialProvidersConfig{}) if err != nil { panic(err) }
Passaggio 4: crea un AWS KMS portachiavi.

Per creare il portachiavi, chiama il metodo keyring con l'oggetto di input keyring. Questo esempio utilizza il CreateAwsKmsKeyring metodo e specifica una chiave KMS. La kmsKeyId variabile rappresenta l'ARN chiave della chiave KMS fornita.

awsKmsKeyringInput := mpltypes.CreateAwsKmsKeyringInput{ KmsClient: kmsClient, KmsKeyId: kmsKeyId, } awsKmsKeyring, err := matProv.CreateAwsKmsKeyring(context.Background(), awsKmsKeyringInput) if err != nil { panic(err) }
Fase 5: Crittografa il testo in chiaro.
res, err := encryptionClient.Encrypt(context.Background(), esdktypes.EncryptInput{ Plaintext: []byte(exampleText), EncryptionContext: encryptionContext, Keyring: awsKmsKeyring, }) if err != nil { panic(err) } ciphertext := res.Ciphertext
Passo 6: Decifra i tuoi dati crittografati usando lo stesso portachiavi che hai usato per crittografare.
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