

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à.

# Protezione dell'integrità dei dati con checksum
<a name="s3-checksums"></a>

Amazon Simple Storage Service (Amazon S3) Simple Storage Service (Amazon S3) offre la possibilità di specificare un checksum quando carichi un oggetto. Quando specifichi un checksum, questo viene memorizzato con l'oggetto e può essere convalidato quando l'oggetto viene scaricato.

I checksum forniscono un ulteriore livello di integrità dei dati durante il trasferimento dei file. Con i checksum, è possibile verificare la coerenza dei dati confermando che il file ricevuto corrisponde al file originale. [Per ulteriori informazioni sui checksum con Amazon S3, consulta la Guida per l'[utente di Amazon Simple Storage Service](https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html), che include gli algoritmi supportati.](https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html#using-additional-checksums)

Hai la flessibilità di scegliere l'algoritmo più adatto alle tue esigenze e lasciare che sia l'SDK a calcolare il checksum. In alternativa, puoi fornire un valore di checksum precalcolato utilizzando uno degli algoritmi supportati. 

**Nota**  
 A partire dalla versione 3.337.0 di, l'SDK fornisce una protezione di integrità predefinita calcolando AWS SDK per PHP automaticamente un checksum per i caricamenti. `CRC32` L'SDK calcola questo checksum se non fornisci un valore di checksum precalcolato o se non specifichi un algoritmo che l'SDK deve utilizzare per calcolare un checksum.   
[L'SDK fornisce anche impostazioni globali per la protezione dell'integrità dei dati che puoi impostare esternamente, come puoi leggere nella Guida di riferimento agli strumenti.AWS SDKs ](https://docs.aws.amazon.com/sdkref/latest/guide/feature-dataintegrity.html)

**Importante**  
Per utilizzare l'`CRC32C`algoritmo, l'ambiente PHP richiede l'[installazione dell'estensione AWS Common Runtime (CRT](guide_crt.md)).AWS 

Discutiamo i checksum in due fasi di richiesta: caricamento di un oggetto e download di un oggetto. 

## Caricamento di un oggetto
<a name="use-service-S3-checksum-upload"></a>

Carichi oggetti su Amazon S3 utilizzando il metodo [putObject](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-s3-2006-03-01.html#putobject) di. `S3Client` Utilizza la `ChecksumAlgorithm` coppia nell'array di parametri per abilitare il calcolo del checksum e specificare l'algoritmo. 

```
$client = new \Aws\S3\S3Client(['region' => 'us-east-2']); // See the note below.
$result = $client->putObject([
        'Bucket' => 'amzn-s3-demo-bucket',
        'Key' => 'key',
        'ChecksumAlgorithm' => 'CRC32',
        'Body' => 'Object contents to test the checksum.'
]);
```

Se non fornisci un algoritmo di checksum con la richiesta, il comportamento del checksum varia a seconda della versione dell'SDK che usi, come mostrato nella tabella seguente.

**Comportamento del checksum quando non viene fornito alcun algoritmo di checksum**


| Versione PHP SDK | Comportamento del checksum | 
| --- | --- | 
| precedente alla versione 3.337.0 | L'SDK non calcola automaticamente un checksum basato su CRC e lo fornisce nella richiesta. | 
| 3.337.0 o versione successiva | L'SDK utilizza l'`CRC32`algoritmo per calcolare il checksum e lo fornisce nella richiesta. Amazon S3 convalida l'integrità del trasferimento calcolando il proprio `CRC32` checksum e lo confronta con il checksum fornito dall'SDK. Se i checksum corrispondono, il checksum viene salvato con l'oggetto. | 

### Utilizza un valore di checksum precalcolato
<a name="use-service-S3-checksum-upload-pre"></a>

Un valore di checksum precalcolato fornito con la richiesta disabilita il calcolo automatico da parte dell'SDK e utilizza invece il valore fornito.

L'esempio seguente mostra una richiesta con un checksum precalcolato. SHA256

```
use Aws\S3\S3Client;
use GuzzleHttp\Psr7;

$client = new S3Client([
    'region' => 'us-east-1',
]);

// Calculate the SHA256 checksum of the contents to be uploaded.
$contents = 'Object contents to test the checksum.';
$body = Psr7\Utils::streamFor($contents);
$sha256 = base64_encode(Psr7\Utils::hash($body, 'sha256', true));

$result = $client->putObject([
    'Bucket' => 'amzn-s3-demo-bucket',
    'Key' => 'key',
    'Body' => $body,
    'ChecksumSHA256' => $sha256
]);
```

Se Amazon S3 determina che il valore del checksum non è corretto per l'algoritmo specificato, il servizio restituisce una risposta di errore.

### Caricamenti in più parti
<a name="use-service-S3-checksum-upload-multi"></a>

Puoi anche utilizzare i checksum con caricamenti in più parti.

 [Come illustrato nell'esempio seguente, specificate l'algoritmo di checksum come coppia chiave-valore nell'array del costruttore. `params``MultipartUploader`](https://docs.aws.amazon.com/aws-sdk-php/v3/api/class-Aws.S3.MultipartUploader.html#___construct) 

```
$s3Client = new S3Client([
    'region' => 'us-east-1'
]);

$stream = fopen("/path/to/large/file", "r");

$mpUploader = new MultipartUploader($s3Client, $stream, [
    'bucket' => 'amzn-s3-demo-bucket',
    'key' => 'key',
    'params' => ['ChecksumAlgorithm' => 'CRC32']
]);
```

## Donwload di un oggetto
<a name="use-service-S3-checksum-download"></a>

Quando utilizzate il metodo [getObject getObject](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-s3-2006-03-01.html#getobject) , l'SDK convalida automaticamente il checksum quando il valore della chiave è. `ChecksumMode` `enabled` 

La richiesta nel seguente frammento indica all'SDK di convalidare il checksum nella risposta calcolando il checksum e confrontando i valori.

```
$result = $client->getObject([
        'Bucket' => 'amzn-s3-demo-bucket',
        'Key' => 'test-checksum-key',
        'ChecksumMode' => 'enabled',
]);
```

**Nota**  
Se l'oggetto non è stato caricato con un checksum, non viene effettuata alcuna convalida. 