

 AWS SDK untuk Java 1.x mencapai end-of-support pada 31 Desember 2025. Kami menyarankan Anda bermigrasi ke [AWS SDK for Java 2.x](https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/home.html)untuk terus menerima fitur baru, peningkatan ketersediaan, dan pembaruan keamanan.

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Amazon S3 enkripsi sisi klien dengan kunci terkelola AWS KMS
<a name="examples-crypto-kms"></a>

Contoh berikut menggunakan kelas [AmazonS3 EncryptionClient V2Builder](https://docs.aws.amazon.com/sdk-for-java/v1/reference/com/amazonaws/services/s3/AmazonS3EncryptionClientV2Builder.html) untuk membuat klien dengan enkripsi sisi Amazon S3 klien diaktifkan. Setelah dikonfigurasi, objek apa pun yang Anda unggah untuk Amazon S3 menggunakan klien ini akan dienkripsi. Setiap objek yang Anda dapatkan dari Amazon S3 menggunakan klien ini secara otomatis didekripsi.

**catatan**  
Contoh berikut menunjukkan cara menggunakan enkripsi Amazon S3 sisi klien dengan kunci terkelola AWS KMS. Untuk mempelajari cara menggunakan enkripsi dengan kunci Anda sendiri, lihat [enkripsi Amazon S3 sisi klien dengan kunci master klien](examples-crypto-masterkey.md).

Anda dapat memilih dari dua mode enkripsi saat mengaktifkan Amazon S3 enkripsi sisi klien: otentikasi ketat atau diautentikasi. Bagian berikut menunjukkan cara mengaktifkan setiap jenis. Untuk mempelajari algoritma mana yang digunakan setiap mode, lihat [CryptoMode](https://docs.aws.amazon.com/sdk-for-java/v1/reference/com/amazonaws/services/s3/model/CryptoMode.html)definisinya.

## Impor yang diperlukan
<a name="required-imports"></a>

Impor kelas berikut untuk contoh-contoh ini.

 **Impor** 

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

## Enkripsi otentikasi yang ketat
<a name="strict-authenticated-encryption-kms"></a>

Enkripsi otentikasi ketat adalah mode default jika tidak `CryptoMode` ditentukan.

Untuk mengaktifkan mode ini secara eksplisit, tentukan `StrictAuthenticatedEncryption` nilai dalam metode. `withCryptoConfiguration`

**catatan**  
Untuk menggunakan enkripsi otentikasi sisi klien, Anda harus menyertakan file [jar Bouncy Castle](https://www.bouncycastle.org/download/bouncy-castle-java/) terbaru di classpath aplikasi Anda.

 **Kode** 

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

Panggil `putObject` metode pada klien Amazon S3 enkripsi untuk mengunggah objek.

 **Kode** 

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

Anda dapat mengambil objek menggunakan klien yang sama. Contoh ini memanggil `getObjectAsString` metode untuk mengambil string yang disimpan.

 **Kode** 

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

## Mode enkripsi yang diautentikasi
<a name="authenticated-encryption-kms"></a>

Saat Anda menggunakan `AuthenticatedEncryption` mode, algoritma pembungkus kunci yang ditingkatkan diterapkan selama enkripsi. Saat mendekripsi dalam mode ini, algoritme dapat memverifikasi integritas objek yang didekripsi dan melempar pengecualian jika pemeriksaan gagal. Untuk detail selengkapnya tentang cara kerja enkripsi yang diautentikasi, lihat posting blog Enkripsi [Terautentikasi Amazon S3 Sisi Klien](https://aws.amazon.com/blogs/developer/amazon-s3-client-side-authenticated-encryption).

**catatan**  
Untuk menggunakan enkripsi otentikasi sisi klien, Anda harus menyertakan file [jar Bouncy Castle](https://www.bouncycastle.org/download/bouncy-castle-java/) terbaru di classpath aplikasi Anda.

Untuk mengaktifkan mode ini, tentukan `AuthenticatedEncryption` nilai dalam `withCryptoConfiguration` metode.

 **Kode** 

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

## Mengkonfigurasi klien AWS KMS
<a name="configure-kms"></a>

Klien Amazon S3 enkripsi membuat AWS KMS klien secara default, kecuali satu ditentukan secara eksplisit.

Untuk mengatur wilayah untuk klien yang dibuat secara otomatis ini, atur AWS KMS . `awsKmsRegion`

 **Kode** 

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

Atau, Anda dapat menggunakan AWS KMS klien Anda sendiri untuk menginisialisasi klien enkripsi.

 **Kode** 

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