Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
AWS Encryption SDK pour un exemple de code Go
Les exemples suivants montrent les modèles de codage de base que vous utilisez lorsque vous programmez avec le AWS Encryption SDK for Go. Plus précisément, vous instanciez la bibliothèque AWS Encryption SDK et les fournisseurs de matériaux. Ensuite, avant d'appeler chaque méthode, vous instanciez l'objet qui définit l'entrée de la méthode.
Pour des exemples montrant comment configurer les options du AWS Encryption SDK, telles que la spécification d'une suite d'algorithmes alternative et la limitation des clés de données chiffrées, consultez les exemples Go
Chiffrement et déchiffrement des données dans AWS Encryption SDK pour Go
Cet exemple montre le modèle de base pour le chiffrement et le déchiffrement des données. Il chiffre une petite quantité de données à l'aide de clés de données protégées par une clé AWS KMS d'encapsulation.
- Étape 1 : instanciez le. AWS Encryption SDK
-
Vous allez utiliser les méthodes décrites dans le AWS Encryption SDK pour crypter et déchiffrer les données.
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) } - Étape 2 : Créez un AWS KMS client.
-
cfg, err := config.LoadDefaultConfig(context.TODO()) if err != nil { panic(err) } kmsClient := kms.NewFromConfig(cfg, func(o *kms.Options) { o.Region = KmsKeyRegion }) - Facultatif : créez votre contexte de chiffrement.
-
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", } - Étape 3 : Instanciez la bibliothèque des fournisseurs de matériaux.
-
Vous utiliserez les méthodes de la bibliothèque des fournisseurs de matériaux pour créer les porte-clés qui spécifient quelles clés protègent vos données.
matProv, err := mpl.NewClient(mpltypes.MaterialProvidersConfig{}) if err != nil { panic(err) } - Étape 4 : Créez un AWS KMS porte-clés
-
Pour créer le trousseau de clés, appelez la méthode du trousseau de clés avec l'objet de saisie du trousseau de clés. Cet exemple utilise la
CreateAwsKmsKeyringméthode et spécifie une clé KMS. LakmsKeyIdvariable représente l'ARN clé de la clé KMS que vous fournissez.awsKmsKeyringInput := mpltypes.CreateAwsKmsKeyringInput{ KmsClient: kmsClient, KmsKeyId: kmsKeyId, } awsKmsKeyring, err := matProv.CreateAwsKmsKeyring(context.Background(), awsKmsKeyringInput) if err != nil { panic(err) } - Étape 5 : chiffrez le texte en clair.
-
res, err := encryptionClient.Encrypt(context.Background(), esdktypes.EncryptInput{ Plaintext: []byte(exampleText), EncryptionContext: encryptionContext, Keyring: awsKmsKeyring, }) if err != nil { panic(err) } ciphertext := res.Ciphertext - Étape 6 : Déchiffrez vos données cryptées en utilisant le même porte-clés que vous avez utilisé pour crypter.
-
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