

La AWS SDK per Java 1.x è stata raggiunta end-of-support il 31 dicembre 2025. Ti consigliamo di eseguire la migrazione a per continuare [AWS SDK for Java 2.x](https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/home.html)a ricevere nuove funzionalità, miglioramenti della disponibilità e aggiornamenti di sicurezza.

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Usa la Amazon S3 crittografia lato client
<a name="examples-crypto"></a>

La crittografia dei dati utilizzando il client di Amazon S3 crittografia è un modo per fornire un ulteriore livello di protezione per le informazioni sensibili in cui sono archiviate. Amazon S3 Gli esempi in questa sezione mostrano come creare e configurare il client di Amazon S3 crittografia per l'applicazione.

Se non conosci la crittografia, consulta le [nozioni di base sulla crittografia](https://docs.aws.amazon.com/kms/latest/developerguide/crypto-intro.html) nella Guida per sviluppatori AWS KMS per una panoramica di base dei termini e degli algoritmi di crittografia. Per informazioni sul supporto della crittografia in generale AWS SDKs, consulta [AWS SDK Support for Amazon S3 Client-Side Encryption nella Guida generale](https://docs.aws.amazon.com/general/latest/gr/aws_sdk_cryptography.html). Amazon Web Services 

**Nota**  
Questi esempi di codice presuppongono che tu abbia compreso il materiale contenuto in [Using the AWS SDK per Java](basics.md) e che tu abbia configurato AWS le credenziali predefinite utilizzando le informazioni contenute in [Configurazione delle AWS credenziali](setup-credentials.md) e Area per lo sviluppo.

Se si utilizza la versione 1.11.836 o precedente di AWS SDK per Java, vedere [Amazon S3 Encryption Client Migration per informazioni sulla migrazione](s3-encryption-migration.md) delle applicazioni alle versioni successive. [Se non riesci a eseguire la migrazione, guarda questo esempio completo su.](https://github.com/awsdocs/aws-doc-sdk-examples/blob/master/java/example_code/s3/src/main/java/aws/example/s3/S3Encrypt.java) GitHub

Altrimenti, se utilizzi la versione 1.11.837 o successiva di AWS SDK per Java, esplora gli argomenti di esempio elencati di seguito per utilizzare la crittografia lato client. Amazon S3 

**Topics**
+ [

# Amazon S3 crittografia lato client con chiavi master client
](examples-crypto-masterkey.md)
+ [

# Amazon S3 crittografia lato client con chiavi gestite AWS KMS
](examples-crypto-kms.md)

# Amazon S3 crittografia lato client con chiavi master client
<a name="examples-crypto-masterkey"></a>

Gli esempi seguenti utilizzano la classe [AmazonS3 EncryptionClient V2Builder](https://docs.aws.amazon.com/sdk-for-java/v1/reference/com/amazonaws/services/s3/AmazonS3EncryptionClientV2Builder.html) per creare un client con crittografia lato client abilitata. Amazon S3 Una volta abilitata, tutti gli oggetti su cui carichi utilizzando questo client verranno crittografati. Amazon S3 Tutti gli oggetti ottenuti Amazon S3 utilizzando questo client verranno automaticamente decrittografati.

**Nota**  
Gli esempi seguenti dimostrano l'utilizzo della crittografia Amazon S3 lato client con chiavi master client gestite dal cliente. Per informazioni su come utilizzare la crittografia con chiavi gestite AWS KMS, consulta la sezione Crittografia lato [Amazon S3 client](examples-crypto-kms.md) con chiavi gestite KMS. AWS 

Puoi scegliere tra due modalità di crittografia quando abiliti la Amazon S3 crittografia lato client: autenticata rigorosa o autenticata. Le sezioni seguenti mostrano come abilitare ogni tipo. Per informazioni sugli algoritmi utilizzati da ciascuna modalità, consultate la [CryptoMode](https://docs.aws.amazon.com/sdk-for-java/v1/reference/com/amazonaws/services/s3/model/CryptoMode.html)definizione.

## Importazioni obbligatorie
<a name="required-imports"></a>

Importa le seguenti classi per questi esempi.

 **Importazioni** 

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

## Crittografia autenticata rigorosa
<a name="strict-authenticated-encryption"></a>

La crittografia autenticata rigorosa è la modalità predefinita se non `CryptoMode` viene specificata alcuna.

Per abilitare esplicitamente questa modalità, specificate il `StrictAuthenticatedEncryption` valore nel `withCryptoConfiguration` metodo.

**Nota**  
Per utilizzare la crittografia autenticata lato client, è necessario includere il file [jar di Bouncy Castle](https://www.bouncycastle.org/download/bouncy-castle-java/) più recente nel classpath dell'applicazione.

 **Codice** 

```
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");
```

## Modalità di crittografia autenticata
<a name="authenticated-encryption-mode"></a>

Quando si utilizza `AuthenticatedEncryption` la modalità, durante la crittografia viene applicato un algoritmo di key wrapping migliorato. Durante la decrittografia in questa modalità, l'algoritmo può verificare l'integrità dell'oggetto decrittografato e generare un'eccezione se il controllo fallisce. Per ulteriori dettagli su come funziona la crittografia autenticata, consultate il post sul blog [Amazon S3 Client-Side](https://aws.amazon.com/blogs/developer/amazon-s3-client-side-authenticated-encryption) Authenticated Encryption.

**Nota**  
Per utilizzare la crittografia autenticata lato client, è necessario includere il file jar [Bouncy Castle](https://www.bouncycastle.org/download/bouncy-castle-java/) più recente nel classpath dell'applicazione.

Per abilitare questa modalità, specificate il valore nel metodo. `AuthenticatedEncryption` `withCryptoConfiguration`

 **Codice** 

```
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 crittografia lato client con chiavi gestite AWS KMS
<a name="examples-crypto-kms"></a>

Gli esempi seguenti utilizzano la classe [AmazonS3 EncryptionClient V2Builder](https://docs.aws.amazon.com/sdk-for-java/v1/reference/com/amazonaws/services/s3/AmazonS3EncryptionClientV2Builder.html) per creare un client con crittografia lato client abilitata. Amazon S3 Una volta configurato, tutti gli oggetti su cui carichi utilizzando questo client verranno crittografati. Amazon S3 Tutti gli oggetti ottenuti Amazon S3 utilizzando questo client vengono decrittografati automaticamente.

**Nota**  
Gli esempi seguenti mostrano come utilizzare la crittografia Amazon S3 lato client con AWS le chiavi gestite da KMS. Per informazioni su come utilizzare la crittografia con le proprie chiavi, vedere [Crittografia Amazon S3 lato client](examples-crypto-masterkey.md) con chiavi master client.

È possibile scegliere tra due modalità di crittografia quando si abilita la Amazon S3 crittografia lato client: autenticata rigorosa o autenticata. Le sezioni seguenti mostrano come abilitare ogni tipo. Per informazioni sugli algoritmi utilizzati da ciascuna modalità, consultate la [CryptoMode](https://docs.aws.amazon.com/sdk-for-java/v1/reference/com/amazonaws/services/s3/model/CryptoMode.html)definizione.

## Importazioni obbligatorie
<a name="required-imports"></a>

Importa le seguenti classi per questi esempi.

 **Importazioni** 

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

## Crittografia autenticata rigorosa
<a name="strict-authenticated-encryption-kms"></a>

La crittografia autenticata rigorosa è la modalità predefinita se non `CryptoMode` viene specificata alcuna.

Per abilitare esplicitamente questa modalità, specificate il `StrictAuthenticatedEncryption` valore nel `withCryptoConfiguration` metodo.

**Nota**  
Per utilizzare la crittografia autenticata lato client, è necessario includere il file [jar di Bouncy Castle](https://www.bouncycastle.org/download/bouncy-castle-java/) più recente nel classpath dell'applicazione.

 **Codice** 

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

Richiamate il `putObject` metodo sul client di crittografia per caricare oggetti. Amazon S3 

 **Codice** 

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

È possibile recuperare l'oggetto utilizzando lo stesso client. Questo esempio chiama il `getObjectAsString` metodo per recuperare la stringa che è stata memorizzata.

 **Codice** 

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

## modalità di crittografia autenticata
<a name="authenticated-encryption-kms"></a>

Quando si utilizza `AuthenticatedEncryption` la modalità, durante la crittografia viene applicato un algoritmo di key wrapping migliorato. Durante la decrittografia in questa modalità, l'algoritmo può verificare l'integrità dell'oggetto decrittografato e generare un'eccezione se il controllo fallisce. Per ulteriori dettagli su come funziona la crittografia autenticata, consultate il post sul blog [Amazon S3 Client-Side](https://aws.amazon.com/blogs/developer/amazon-s3-client-side-authenticated-encryption) Authenticated Encryption.

**Nota**  
Per utilizzare la crittografia autenticata lato client, è necessario includere il file jar [Bouncy Castle](https://www.bouncycastle.org/download/bouncy-castle-java/) più recente nel classpath dell'applicazione.

Per abilitare questa modalità, specificate il valore nel metodo. `AuthenticatedEncryption` `withCryptoConfiguration`

 **Codice** 

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

## Configurazione del client AWS KMS
<a name="configure-kms"></a>

Il client di Amazon S3 crittografia crea un AWS KMS client per impostazione predefinita, a meno che non ne venga specificato uno esplicitamente.

Per impostare la regione per questo client creato automaticamente, imposta il AWS KMS . `awsKmsRegion`

 **Codice** 

```
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();
```

In alternativa, è possibile utilizzare il proprio AWS KMS client per inizializzare il client di crittografia.

 **Codice** 

```
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();
```