

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# AWS Encryption SDK für Go Beispielcode
<a name="go-examples"></a>

Die folgenden Beispiele zeigen die grundlegenden Codierungsmuster, die Sie beim Programmieren mit dem AWS Encryption SDK for Go verwenden. Insbesondere instanziieren Sie die Bibliothek AWS Encryption SDK und die Materiallieferantenbibliothek. Bevor Sie die einzelnen Methoden aufrufen, instanziieren Sie dann das Objekt, das die Eingabe für die Methode definiert.

Beispiele, die zeigen, wie Optionen in der konfiguriert werden AWS Encryption SDK, wie z. B. die Angabe einer alternativen Algorithmussuite und die Beschränkung verschlüsselter Datenschlüssel, finden Sie in den [ Go-Beispielen ](https://github.com/aws/aws-encryption-sdk/tree/mainline/releases/go/encryption-sdk/examples) im aws-encryption-sdk-Repository unter. GitHub

## Verschlüsseln und Entschlüsseln von Daten im AWS Encryption SDK für Go
<a name="go-example-encrypt"></a>

Dieses Beispiel zeigt das grundlegende Muster für das Verschlüsseln und Entschlüsseln von Daten. Es verschlüsselt eine kleine Datenmenge mit Datenschlüsseln, die durch einen AWS KMS Wrapping-Schlüssel geschützt sind.

**Schritt 1: Instanziieren Sie die. AWS Encryption SDK**  
Sie verwenden die Methoden in der, AWS Encryption SDK um Daten zu verschlüsseln und zu entschlüsseln.  

```
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)
}
```

**Schritt 2: Erstellen Sie einen 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
})
```

**Optional: Erstellen Sie Ihren Verschlüsselungskontext.**  

```
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",
}
```

**Schritt 3: Instanziieren Sie die Bibliothek der Materialanbieter.**  
Sie verwenden die Methoden in der Bibliothek der Materialanbieter, um die Schlüsselringe zu erstellen, die angeben, welche Schlüssel Ihre Daten schützen.  

```
matProv, err := mpl.NewClient(mpltypes.MaterialProvidersConfig{})
if err != nil {
    panic(err)
}
```

**Schritt 4: Erstellen Sie einen AWS KMS Schlüsselbund.**  
Um den Schlüsselbund zu erstellen, rufen Sie die Keyring-Methode mit dem Keyring-Eingabeobjekt auf. In diesem Beispiel wird die `CreateAwsKmsKeyring` Methode verwendet und ein KMS-Schlüssel angegeben. Die `kmsKeyId` Variable stellt den Schlüssel-ARN des von Ihnen angegebenen KMS-Schlüssels dar.  

```
awsKmsKeyringInput := mpltypes.CreateAwsKmsKeyringInput{
    KmsClient: kmsClient,
    KmsKeyId:  kmsKeyId,
}
awsKmsKeyring, err := matProv.CreateAwsKmsKeyring(context.Background(), awsKmsKeyringInput)
if err != nil {
    panic(err)
}
```

**Schritt 5: Verschlüsseln Sie den Klartext.**  

```
res, err := encryptionClient.Encrypt(context.Background(), esdktypes.EncryptInput{
    Plaintext:         []byte(exampleText),
    EncryptionContext: encryptionContext,
    Keyring:           awsKmsKeyring,
})
if err != nil {
    panic(err)
}

ciphertext := res.Ciphertext
```

**Schritt 6: Entschlüsseln Sie Ihre verschlüsselten Daten mit demselben Schlüsselbund, den Sie bei der Verschlüsselung verwendet haben.**  

```
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
```