

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.

# Verschlüsselung und Entschlüsselung von AWS KMS Datenschlüsseln mit der Version 3 AWS SDK für PHP
<a name="kms-example-encrypt"></a>

Datenschlüssel sind Verschlüsselungsschlüssel, mit denen Sie Daten verschlüsseln können. Dazu gehören große Datenmengen und andere Datenverschlüsselungsschlüssel.

Sie können AWS Key Management Service an's (AWS KMS) verwenden, [AWS KMS key](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#kms_keys)um Datenschlüssel zu generieren, zu verschlüsseln und zu entschlüsseln.

In den nachstehenden Beispielen wird Folgendes veranschaulicht:
+ Verschlüsseln Sie einen Datenschlüssel mit [Encrypt](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-kms-2014-11-01.html#encrypt).
+ Entschlüsseln Sie einen Datenschlüssel mit [Decrypt](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-kms-2014-11-01.html#decrypt).
+ Verschlüsseln Sie einen Datenschlüssel erneut mit einem neuen KMS-Schlüssel mithilfe von. [ReEncrypt](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-kms-2014-11-01.html#reencrypt)

Der gesamte Beispielcode für AWS SDK für PHP ist [hier verfügbar. GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code)

## Anmeldeinformationen
<a name="examplecredentials"></a>

Bevor Sie den Beispielcode ausführen, konfigurieren Sie Ihre AWS Anmeldeinformationen wie unter beschrieben[Authentifizierung AWS mit AWS SDK für PHP Version 3](credentials.md). Importieren Sie dann die AWS SDK für PHP, wie unter beschrieben[Installation der AWS SDK für PHP Version 3](getting-started_installation.md).

Weitere Informationen zur Verwendung von AWS Key Management Service (AWS KMS) finden Sie im [AWS KMS Entwicklerhandbuch](https://docs.aws.amazon.com/kms/latest/developerguide/).

## Encrypt
<a name="encrypt"></a>

Die Operation [Encrypt (Verschlüsseln)](https://docs.aws.amazon.com/kms/latest/APIReference/API_Encrypt.html) ist für die Verschlüsselung von Datenschlüsseln konzipiert, wird aber nicht häufig verwendet. Die [GenerateDataKeyWithoutPlaintext](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKeyWithoutPlaintext.html)Operationen [GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html)und geben verschlüsselte Datenschlüssel zurück. Sie können die `Encypt` Methode verwenden, wenn Sie verschlüsselte Daten in eine neue AWS Region verschieben und deren Datenschlüssel mithilfe eines KMS-Schlüssels in der neuen Region verschlüsseln möchten.

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Beispiel-Code** 

```
$KmsClient = new Aws\Kms\KmsClient([
    'profile' => 'default',
    'version' => '2014-11-01',
    'region' => 'us-east-2'
]);

$keyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab';
$message = pack('c*', 1, 2, 3, 4, 5, 6, 7, 8, 9, 0);

try {
    $result = $KmsClient->encrypt([
        'KeyId' => $keyId,
        'Plaintext' => $message,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

## Decrypt
<a name="decrypt"></a>

Zur Entschlüsselung eines Datenschlüssels verwenden Sie die Produktion [Decrypt.](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html)

Der Wert`ciphertextBlob`, den Sie angeben, muss der Wert des `CiphertextBlob` Felds aus einer [GenerateDataKey[GenerateDataKeyWithoutPlaintext](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKeyWithoutPlaintext.html)](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html), oder [Encrypt-Antwort](https://docs.aws.amazon.com/kms/latest/APIReference/API_Encrypt.html) sein.

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Beispiel-Code** 

```
$KmsClient = new Aws\Kms\KmsClient([
    'profile' => 'default',
    'version' => '2014-11-01',
    'region' => 'us-east-2'
]);

$ciphertext = 'Place your cipher text blob here';

try {
    $result = $KmsClient->decrypt([
        'CiphertextBlob' => $ciphertext,
    ]);
    $plaintext = $result['Plaintext'];
    var_dump($plaintext);
} catch (AwsException $e) {
    // Output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

## Neuverschlüsseln
<a name="reencrypt"></a>

Verwenden Sie den Vorgang, um einen verschlüsselten Datenschlüssel zu entschlüsseln und den Datenschlüssel dann sofort unter einem anderen KMS-Schlüssel erneut zu verschlüsseln. [ReEncrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_ReEncrypt.html) Die Operationen werden ausschließlich serverseitig innerhalb von ausgeführt AWS KMS, sodass Ihr Klartext niemals außerhalb von angezeigt wird. AWS KMS

Der Wert`ciphertextBlob`, den Sie angeben, muss der Wert des `CiphertextBlob` Felds aus einer [GenerateDataKey[GenerateDataKeyWithoutPlaintext](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKeyWithoutPlaintext.html)](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html), oder [Encrypt-Antwort](https://docs.aws.amazon.com/kms/latest/APIReference/API_Encrypt.html) sein.

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Beispiel-Code** 

```
$KmsClient = new Aws\Kms\KmsClient([
    'profile' => 'default',
    'version' => '2014-11-01',
    'region' => 'us-east-2'
]);

$keyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab';
$ciphertextBlob = 'Place your cipher text blob here';

try {
    $result = $KmsClient->reEncrypt([
        'CiphertextBlob' => $ciphertextBlob,
        'DestinationKeyId' => $keyId,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```