

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.

# Verwenden des DynamoDB Encryption Client für Java
<a name="java-using"></a>

**Anmerkung**  
Unsere clientseitige Verschlüsselungsbibliothek wurde in Database Encryption SDK [umbenannt](DDBEC-rename.md). AWS Das folgende Thema enthält Informationen zu Versionen 1. *x* —2. *x* des DynamoDB Encryption Client für Java und Versionen 1. *x —3*. *x* des DynamoDB Encryption Client für Python. Weitere Informationen finden Sie unter [AWS Database Encryption SDK für DynamoDB-Versionsunterstützung](legacy-dynamodb-encryption-client.md#legacy-support).

In diesem Thema werden einige Funktionen des DynamoDB Encryption Client in Java erklärt, die in anderen Programmiersprachenimplementierungen möglicherweise nicht zu finden sind. 

Einzelheiten zur Programmierung mit dem DynamoDB Encryption Client finden Sie in den [Java-Beispielen, den [Beispielen](https://github.com/aws/aws-dynamodb-encryption-java/tree/master/examples)](java-examples.md) im `aws-dynamodb-encryption-java repository` on GitHub und im [Javadoc](https://aws.github.io/aws-database-encryption-sdk-dynamodb/) für den DynamoDB Encryption Client.



**Topics**
+ [Elementverschlüssler](#ddbec-item-encryptor)
+ [Attributaktionen in Java](#attribute-actions-java)
+ [Überschreiben von Tabellennamen](#override-table-name)

## Artikelverschlüsseler: DynamoDBEncryptor
<a name="ddbec-item-encryptor"></a>

[Der DynamoDB Encryption Client in Java hat einen [Elementverschlüsseler: den DynamoDBEncryptor](DDBEC-legacy-concepts.md#item-encryptor) auf niedrigerer Ebene](https://aws.github.io/aws-database-encryption-sdk-dynamodb/com/amazonaws/services/dynamodbv2/datamodeling/sdkv2/encryption/DynamoDBEncryptor.html) 

## Attributaktionen in Java
<a name="attribute-actions-java"></a>

[Attribut-Aktionen](DDBEC-legacy-concepts.md#legacy-attribute-actions) bestimmen, welche Attributwerte verschlüsselt und signiert, welche nur signiert und welche ignoriert werden.

**Wichtig**  
Nachdem Sie die Attributaktionen zum Verschlüsseln der Tabellenelemente verwendet haben, kann das Hinzufügen oder Entfernen von Attributen zu oder aus Ihrem Datenmodell einen Signaturvalidierungsfehler verursachen, der ein Entschlüsseln Ihrer Daten verhindert. Eine detaillierte Beschreibung finden Sie unter [Ändern Ihres Datenmodells](data-model.md).

### Attributaktionen für den DynamoDBEncryptor
<a name="attribute-action-default"></a>

Um Attributaktionen anzugeben, wenn Sie den [DynamoDBEncryptor](https://aws.github.io/aws-database-encryption-sdk-dynamodb/com/amazonaws/services/dynamodbv2/datamodeling/sdkv2/encryption/DynamoDBEncryptor.html) direkt verwenden, erstellen Sie ein `HashMap`-Objekt, in dem Attributnamen und die angegebenen Aktionen durch die Name-Wert-Paare repräsentiert werden. 

Die gültigen Werte für die Attribut-Aktionen sind unter im Aufzählungstyp `EncryptionFlags` definiert. Sie können `ENCRYPT` und `SIGN` gemeinsam oder `SIGN` alleine verwenden, oder beides weglassen. Wenn Sie den DynamoDB Encryption Client jedoch `ENCRYPT` alleine verwenden, gibt er einen Fehler aus. Ein Attribut, das Sie nicht signieren, können Sie nicht verschlüsseln.

```
ENCRYPT
SIGN
```

**Warnung**  
Verschlüsseln Sie die primären Schlüsselattribute nicht. Sie müssen im Klartext bleiben, damit DynamoDB das Element finden kann, ohne einen vollständigen Tabellenscan ausführen zu müssen.

Wenn Sie einen Primärschlüssel im Verschlüsselungskontext angeben und dann `ENCRYPT` in der Attributaktion für eines der Primärschlüsselattribute angeben, löst der DynamoDB Encryption Client eine Ausnahme aus.

Der folgende Java-Code erstellt beispielsweise eine `actions` HashMap , die alle Attribute im Element verschlüsselt und signiert. `record` Ausnahmen sind die Partitionsschlüssel- und Sortierschlüsselattribute, die zwar signiert, aber nicht verschlüsselt sind, sowie das `test`-Attribut, das weder signiert noch verschlüsselt ist.

```
final EnumSet<EncryptionFlags> signOnly = EnumSet.of(EncryptionFlags.SIGN);
final EnumSet<EncryptionFlags> encryptAndSign = EnumSet.of(EncryptionFlags.ENCRYPT, EncryptionFlags.SIGN);
final Map<String, Set<EncryptionFlags>> actions = new HashMap<>();

for (final String attributeName : record.keySet()) {
  switch (attributeName) {
    case partitionKeyName: // no break; falls through to next case
    case sortKeyName:
      // Partition and sort keys must not be encrypted, but should be signed
      actions.put(attributeName, signOnly);
      break;
    case "test":
      // Don't encrypt or sign
      break;
    default:
      // Encrypt and sign everything else
      actions.put(attributeName, encryptAndSign);
      break;
  }
}
```

Wenn Sie dann die [encryptRecord](https://aws.github.io/aws-database-encryption-sdk-dynamodb/com/amazonaws/services/dynamodbv2/datamodeling/sdkv2/encryption/DynamoDBEncryptor.html#encryptRecord-java.util.Map-java.util.Map-com.amazonaws.services.dynamodbv2.datamodeling.sdkv2.encryption.EncryptionContext-)-Methode des `DynamoDBEncryptor` aufrufen, geben Sie die Map als Wert des Parameters `attributeFlags` an. Der folgende Aufruf von `encryptRecord` beispielsweise verwendet die `actions`-Map.

```
// Encrypt the plaintext record
final Map<String, AttributeValue> encrypted_record = encryptor.encryptRecord(record, actions, encryptionContext);
```

## Überschreiben von Tabellennamen
<a name="override-table-name"></a>

Im DynamoDB Encryption Client ist der Name der DynamoDB-Tabelle ein Element des [DynamoDB-Verschlüsselungskontextes, das an die Verschlüsselungs](concepts.md#encryption-context) - und Entschlüsselungsmethoden übergeben wird. Wenn Sie Tabellenelemente verschlüsseln oder signieren, ist der DynamoDB-Verschlüsselungskontext, einschließlich des Tabellennamens, kryptografisch an den Chiffretext gebunden. Wenn der DynamoDB-Verschlüsselungskontext, der an die Entschlüsselungsmethode übergeben wird, nicht mit dem DynamoDB-Verschlüsselungskontext übereinstimmt, der an die Verschlüsselungsmethode übergeben wurde, schlägt der Entschlüsselungsvorgang fehl.

Gelegentlich ändert sich der Name einer Tabelle, z. B. wenn Sie eine Tabelle sichern oder eine [zeitpunktbezogene Wiederherstellung](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/PointInTimeRecovery.html) durchführen. Wenn Sie die Signatur dieser Elemente entschlüsseln oder überprüfen, müssen Sie denselben DynamoDB-Verschlüsselungskontext übergeben, der zum Verschlüsseln und Signieren der Elemente verwendet wurde, einschließlich des ursprünglichen Tabellennamens. Der aktuelle Tabellenname wird nicht benötigt. 

Wenn Sie den verwenden`DynamoDBEncryptor`, stellen Sie den DynamoDB-Verschlüsselungskontext manuell zusammen. Verwenden Sie daher nicht die Operatoren zum Überschreiben von Tabellennamen, wenn Sie die verwenden. `DynamoDBEncryptor` Erstellen Sie stattdessen einen Verschlüsselungskontext mit dem ursprünglichen Tabellennamen und senden Sie ihn an die Entschlüsselungsmethode.