

Le AWS SDK pour Java 1.x a été atteint end-of-support le 31 décembre 2025. Nous vous recommandons de migrer vers le pour continuer [AWS SDK for Java 2.x](https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/home.html)à bénéficier des nouvelles fonctionnalités, des améliorations de disponibilité et des mises à jour de sécurité.

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.

# Utiliser le Amazon S3 chiffrement côté client
<a name="examples-crypto"></a>

Le chiffrement des données à l'aide du client de Amazon S3 chiffrement est un moyen de fournir un niveau de protection supplémentaire aux informations sensibles que vous stockez. Amazon S3 Les exemples de cette section montrent comment créer et configurer le client de Amazon S3 chiffrement pour votre application.

Si vous débutez dans le domaine de la cryptographie, consultez les principes de [base de la cryptographie](https://docs.aws.amazon.com/kms/latest/developerguide/crypto-intro.html) du guide du développeur AWS KMS pour un aperçu de base des termes et algorithmes de cryptographie. Pour plus d'informations sur la prise en charge globale de la cryptographie AWS SDKs, consultez la section [AWS Support du SDK pour le chiffrement Amazon S3 côté client](https://docs.aws.amazon.com/general/latest/gr/aws_sdk_cryptography.html) dans le manuel de référence général. Amazon Web Services 

**Note**  
Ces exemples de code supposent que vous comprenez le contenu de la section [Utilisation du AWS SDK pour Java et que vous avez configuré les](basics.md) AWS informations d'identification par défaut à l'aide des informations de [configuration des informations AWS d'identification et de la région pour le développement](setup-credentials.md).

Si vous utilisez la version 1.11.836 ou une version antérieure du AWS SDK pour Java, consultez la section Migration du [client de Amazon S3 chiffrement pour plus d'informations sur la migration](s3-encryption-migration.md) de vos applications vers des versions ultérieures. Si vous ne parvenez pas à effectuer la migration, consultez [cet exemple complet](https://github.com/awsdocs/aws-doc-sdk-examples/blob/master/java/example_code/s3/src/main/java/aws/example/s3/S3Encrypt.java) sur GitHub.

Sinon, si vous utilisez la version 1.11.837 ou une version ultérieure du AWS SDK pour Java, explorez les exemples de rubriques ci-dessous pour utiliser Amazon S3 le chiffrement côté client.

**Topics**
+ [Amazon S3 chiffrement côté client à l'aide des clés principales du client](examples-crypto-masterkey.md)
+ [Amazon S3 chiffrement côté client avec clés gérées par AWS KMS](examples-crypto-kms.md)

# Amazon S3 chiffrement côté client à l'aide des clés principales du client
<a name="examples-crypto-masterkey"></a>

Les exemples suivants utilisent la classe [AmazonS3 EncryptionClient V2Builder](https://docs.aws.amazon.com/sdk-for-java/v1/reference/com/amazonaws/services/s3/AmazonS3EncryptionClientV2Builder.html) pour créer un Amazon S3 client avec le chiffrement côté client activé. Une fois activé, tous les objets que vous téléchargez à Amazon S3 l'aide de ce client seront chiffrés. Tous les objets que vous obtenez Amazon S3 en utilisant ce client seront automatiquement déchiffrés.

**Note**  
Les exemples suivants illustrent l'utilisation du chiffrement Amazon S3 côté client avec des clés principales client gérées par le client. Pour savoir comment utiliser le chiffrement avec des clés gérées par AWS KMS, consultez la section [Chiffrement Amazon S3 côté client avec des clés gérées par AWS KMS](examples-crypto-kms.md).

Lorsque vous activez le chiffrement côté client, vous pouvez choisir entre deux modes de Amazon S3 chiffrement : authentifié strict ou authentifié. Les sections suivantes montrent comment activer chaque type. Pour connaître les algorithmes utilisés par chaque mode, consultez la [CryptoMode](https://docs.aws.amazon.com/sdk-for-java/v1/reference/com/amazonaws/services/s3/model/CryptoMode.html)définition.

## Importations requises
<a name="required-imports"></a>

Pour ces exemples, vous devez importer les classes suivantes.

 **Importations** 

```
import com.amazonaws.ClientConfiguration;
import com.amazonaws.regions.Regions;
import com.amazonaws.services.s3.AmazonS3EncryptionClientV2Builder;
import com.amazonaws.services.s3.AmazonS3EncryptionV2;
import com.amazonaws.services.s3.model.CryptoConfigurationV2;
import com.amazonaws.services.s3.model.CryptoMode;
import com.amazonaws.services.s3.model.EncryptionMaterials;
import com.amazonaws.services.s3.model.StaticEncryptionMaterialsProvider;
```

## Chiffrement authentifié strict
<a name="strict-authenticated-encryption"></a>

Le chiffrement authentifié strict est le mode par défaut si aucun n'`CryptoMode`est spécifié.

Pour activer explicitement ce mode, spécifiez la `StrictAuthenticatedEncryption` valeur dans la `withCryptoConfiguration` méthode.

**Note**  
Pour utiliser le chiffrement authentifié côté client, vous devez inclure le dernier fichier [jar Bouncy Castle](https://www.bouncycastle.org/download/bouncy-castle-java/) dans le chemin de classe de votre application.

 **Code** 

```
AmazonS3EncryptionV2 s3Encryption = AmazonS3EncryptionClientV2Builder.standard()
         .withRegion(Regions.US_WEST_2)
         .withCryptoConfiguration(new CryptoConfigurationV2().withCryptoMode((CryptoMode.StrictAuthenticatedEncryption)))
         .withEncryptionMaterialsProvider(new StaticEncryptionMaterialsProvider(new EncryptionMaterials(secretKey)))
         .build();

s3Encryption.putObject(bucket_name, ENCRYPTED_KEY2, "This is the 2nd content to encrypt");
```

## Mode de chiffrement authentifié
<a name="authenticated-encryption-mode"></a>

Lorsque vous utilisez le mode `AuthenticatedEncryption`, un algorithme d'encapsulage de clé amélioré est appliqué pendant le chiffrement. Lorsque vous déchiffrez dans ce mode, l'algorithme peut vérifier l'intégrité de l'objet déchiffré et générer une exception si la vérification échoue. Pour plus de détails sur le fonctionnement du chiffrement authentifié, consultez le billet de blog [Amazon S3 sur le chiffrement authentifié côté client](https://aws.amazon.com/blogs/developer/amazon-s3-client-side-authenticated-encryption).

**Note**  
Pour utiliser le chiffrement authentifié côté client, vous devez inclure le dernier fichier [jar Bouncy Castle](https://www.bouncycastle.org/download/bouncy-castle-java/) dans le chemin de classe de votre application.

Pour activer ce mode, spécifiez la valeur `AuthenticatedEncryption` dans la méthode `withCryptoConfiguration`.

 **Code** 

```
AmazonS3EncryptionV2 s3EncryptionClientV2 = AmazonS3EncryptionClientV2Builder.standard()
         .withRegion(Regions.DEFAULT_REGION)
         .withClientConfiguration(new ClientConfiguration())
         .withCryptoConfiguration(new CryptoConfigurationV2().withCryptoMode(CryptoMode.AuthenticatedEncryption))
         .withEncryptionMaterialsProvider(new StaticEncryptionMaterialsProvider(new EncryptionMaterials(secretKey)))
         .build();

s3EncryptionClientV2.putObject(bucket_name, ENCRYPTED_KEY1, "This is the 1st content to encrypt");
```

# Amazon S3 chiffrement côté client avec clés gérées par AWS KMS
<a name="examples-crypto-kms"></a>

Les exemples suivants utilisent la classe [AmazonS3 EncryptionClient V2Builder](https://docs.aws.amazon.com/sdk-for-java/v1/reference/com/amazonaws/services/s3/AmazonS3EncryptionClientV2Builder.html) pour créer un Amazon S3 client avec le chiffrement côté client activé. Une fois configuré, tous les objets que vous téléchargez à Amazon S3 l'aide de ce client seront chiffrés. Tous les objets que vous obtenez en Amazon S3 utilisant ce client sont automatiquement déchiffrés.

**Note**  
Les exemples suivants montrent comment utiliser le chiffrement Amazon S3 côté client avec des clés gérées par AWS KMS. Pour savoir comment utiliser le chiffrement avec vos propres clés, consultez la section [Chiffrement Amazon S3 côté client à l'aide des clés principales du client](examples-crypto-masterkey.md).

Lorsque vous activez le chiffrement côté client, vous pouvez choisir entre deux modes de Amazon S3 chiffrement : authentifié strict ou authentifié. Les sections suivantes montrent comment activer chaque type. Pour connaître les algorithmes utilisés par chaque mode, reportez-vous à la [CryptoMode](https://docs.aws.amazon.com/sdk-for-java/v1/reference/com/amazonaws/services/s3/model/CryptoMode.html)définition.

## Importations requises
<a name="required-imports"></a>

Pour ces exemples, vous devez importer les classes suivantes.

 **Importations** 

```
import com.amazonaws.ClientConfiguration;
import com.amazonaws.regions.Regions;
import com.amazonaws.services.kms.AWSKMS;
import com.amazonaws.services.kms.AWSKMSClientBuilder;
import com.amazonaws.services.kms.model.GenerateDataKeyRequest;
import com.amazonaws.services.kms.model.GenerateDataKeyResult;
import com.amazonaws.services.s3.AmazonS3EncryptionClientV2Builder;
import com.amazonaws.services.s3.AmazonS3EncryptionV2;
import com.amazonaws.services.s3.model.CryptoConfigurationV2;
import com.amazonaws.services.s3.model.CryptoMode;
import com.amazonaws.services.s3.model.EncryptionMaterials;
import com.amazonaws.services.s3.model.KMSEncryptionMaterialsProvider;
```

## Chiffrement authentifié strict
<a name="strict-authenticated-encryption-kms"></a>

Le chiffrement authentifié strict est le mode par défaut si aucun n'`CryptoMode`est spécifié.

Pour activer explicitement ce mode, spécifiez la `StrictAuthenticatedEncryption` valeur dans la `withCryptoConfiguration` méthode.

**Note**  
Pour utiliser le chiffrement authentifié côté client, vous devez inclure le dernier fichier [jar Bouncy Castle](https://www.bouncycastle.org/download/bouncy-castle-java/) dans le chemin de classe de votre application.

 **Code** 

```
AmazonS3EncryptionV2 s3Encryption = AmazonS3EncryptionClientV2Builder.standard()
         .withRegion(Regions.US_WEST_2)
         .withCryptoConfiguration(new CryptoConfigurationV2().withCryptoMode((CryptoMode.StrictAuthenticatedEncryption)))
         .withEncryptionMaterialsProvider(new KMSEncryptionMaterialsProvider(keyId))
         .build();

s3Encryption.putObject(bucket_name, ENCRYPTED_KEY3, "This is the 3rd content to encrypt with a key created in the {console}");
System.out.println(s3Encryption.getObjectAsString(bucket_name, ENCRYPTED_KEY3));
```

Appelez la `putObject` méthode sur le client Amazon S3 de chiffrement pour télécharger des objets.

 **Code** 

```
s3Encryption.putObject(bucket_name, ENCRYPTED_KEY3, "This is the 3rd content to encrypt with a key created in the {console}");
```

Vous pouvez récupérer l'objet en utilisant le même client. Cet exemple appelle la méthode `getObjectAsString` pour récupérer la chaîne qui a été stockée.

 **Code** 

```
System.out.println(s3Encryption.getObjectAsString(bucket_name, ENCRYPTED_KEY3));
```

## Mode de chiffrement authentifié
<a name="authenticated-encryption-kms"></a>

Lorsque vous utilisez le mode `AuthenticatedEncryption`, un algorithme d'encapsulage de clé amélioré est appliqué pendant le chiffrement. Lorsque vous déchiffrez dans ce mode, l'algorithme peut vérifier l'intégrité de l'objet déchiffré et générer une exception si la vérification échoue. Pour plus de détails sur le fonctionnement du chiffrement authentifié, consultez le billet de blog [Amazon S3 sur le chiffrement authentifié côté client](https://aws.amazon.com/blogs/developer/amazon-s3-client-side-authenticated-encryption).

**Note**  
Pour utiliser le chiffrement authentifié côté client, vous devez inclure le dernier fichier [jar Bouncy Castle](https://www.bouncycastle.org/download/bouncy-castle-java/) dans le chemin de classe de votre application.

Pour activer ce mode, spécifiez la valeur `AuthenticatedEncryption` dans la méthode `withCryptoConfiguration`.

 **Code** 

```
AmazonS3EncryptionV2 s3Encryption = AmazonS3EncryptionClientV2Builder.standard()
         .withRegion(Regions.US_WEST_2)
         .withCryptoConfiguration(new CryptoConfigurationV2().withCryptoMode((CryptoMode.AuthenticatedEncryption)))
         .withEncryptionMaterialsProvider(new KMSEncryptionMaterialsProvider(keyId))
         .build();
```

## Configuration du AWS KMS client
<a name="configure-kms"></a>

Le client de Amazon S3 chiffrement crée un AWS KMS client par défaut, sauf si un client est explicitement spécifié.

Pour définir la région de ce AWS KMS client créé automatiquement, définissez le. `awsKmsRegion`

 **Code** 

```
Region kmsRegion = Region.getRegion(Regions.AP_NORTHEAST_1);

AmazonS3EncryptionV2 s3Encryption = AmazonS3EncryptionClientV2Builder.standard()
        .withRegion(Regions.US_WEST_2)
        .withCryptoConfiguration(new CryptoConfigurationV2().withAwsKmsRegion(kmsRegion))
        .withEncryptionMaterialsProvider(new KMSEncryptionMaterialsProvider(keyId))
        .build();
```

Vous pouvez également utiliser votre propre AWS KMS client pour initialiser le client de chiffrement.

 **Code** 

```
AWSKMS kmsClient = AWSKMSClientBuilder.standard()
        .withRegion(Regions.US_WEST_2);
        .build();

AmazonS3EncryptionV2 s3Encryption = AmazonS3EncryptionClientV2Builder.standard()
        .withRegion(Regions.US_WEST_2)
        .withKmsClient(kmsClient)
        .withCryptoConfiguration(new CryptoConfigurationV2().withCryptoMode((CryptoMode.AuthenticatedEncryption)))
        .withEncryptionMaterialsProvider(new KMSEncryptionMaterialsProvider(keyId))
        .build();
```