

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

# Mengenkripsi dan mendekripsi kunci AWS KMS data menggunakan Versi 3 AWS SDK untuk PHP
<a name="kms-example-encrypt"></a>

Kunci data adalah kunci enkripsi yang dapat Anda gunakan untuk mengenkripsi data, termasuk data dalam jumlah besar dan kunci enkripsi data lainnya.

Anda dapat menggunakan AWS Key Management Service an (AWS KMS) [AWS KMS key](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#kms_keys)untuk menghasilkan, mengenkripsi, dan mendekripsi kunci data.

Contoh berikut menunjukkan cara:
+ Enkripsi kunci data menggunakan [Encrypt](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-kms-2014-11-01.html#encrypt).
+ [Dekripsi kunci data menggunakan Dekripsi.](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-kms-2014-11-01.html#decrypt)
+ Enkripsi ulang kunci data dengan kunci KMS baru menggunakan. [ReEncrypt](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-kms-2014-11-01.html#reencrypt)

Semua kode contoh untuk AWS SDK untuk PHP tersedia [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code).

## Kredensial
<a name="examplecredentials"></a>

Sebelum menjalankan kode contoh, konfigurasikan AWS kredensil Anda, seperti yang dijelaskan dalam. [Mengautentikasi dengan AWS menggunakan AWS SDK untuk PHP Versi 3](credentials.md) Kemudian impor AWS SDK untuk PHP, seperti yang dijelaskan dalam[Menginstal AWS SDK untuk PHP Versi 3](getting-started_installation.md).

Untuk informasi selengkapnya tentang menggunakan AWS Key Management Service (AWS KMS), lihat [Panduan AWS KMS Pengembang](https://docs.aws.amazon.com/kms/latest/developerguide/).

## Enkripsi
<a name="encrypt"></a>

Operasi [Encrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Encrypt.html) dirancang untuk mengenkripsi kunci data, tetapi tidak sering digunakan. [GenerateDataKeyWithoutPlaintext](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKeyWithoutPlaintext.html)Operasi [GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html)dan mengembalikan kunci data terenkripsi. Anda dapat menggunakan `Encypt` metode ini saat memindahkan data terenkripsi ke AWS Wilayah baru dan ingin mengenkripsi kunci datanya dengan menggunakan kunci KMS di Wilayah baru.

 **Impor** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Kode Sampel** 

```
$KmsClient = new Aws\Kms\KmsClient([
    'profile' => 'default',
    'version' => '2014-11-01',
    'region' => 'us-east-2'
]);

$keyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab';
$message = pack('c*', 1, 2, 3, 4, 5, 6, 7, 8, 9, 0);

try {
    $result = $KmsClient->encrypt([
        'KeyId' => $keyId,
        'Plaintext' => $message,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

## Dekripsi
<a name="decrypt"></a>

Untuk mendekripsi kunci data, gunakan operasi [Decrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html).

`ciphertextBlob`Yang Anda tentukan harus menjadi nilai `CiphertextBlob` bidang dari [GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html), [GenerateDataKeyWithoutPlaintext](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKeyWithoutPlaintext.html), atau [Enkripsi](https://docs.aws.amazon.com/kms/latest/APIReference/API_Encrypt.html) respons.

 **Impor** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Kode Sampel** 

```
$KmsClient = new Aws\Kms\KmsClient([
    'profile' => 'default',
    'version' => '2014-11-01',
    'region' => 'us-east-2'
]);

$ciphertext = 'Place your cipher text blob here';

try {
    $result = $KmsClient->decrypt([
        'CiphertextBlob' => $ciphertext,
    ]);
    $plaintext = $result['Plaintext'];
    var_dump($plaintext);
} catch (AwsException $e) {
    // Output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

## Enkripsi ulang
<a name="reencrypt"></a>

Untuk mendekripsi kunci data terenkripsi, dan kemudian segera mengenkripsi ulang kunci data di bawah kunci KMS yang berbeda, gunakan operasi. [ReEncrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_ReEncrypt.html) Operasi dilakukan sepenuhnya di sisi server di dalam AWS KMS, sehingga mereka tidak pernah mengekspos plaintext Anda di luar. AWS KMS

`ciphertextBlob`Yang Anda tentukan harus menjadi nilai `CiphertextBlob` bidang dari [GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html), [GenerateDataKeyWithoutPlaintext](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKeyWithoutPlaintext.html), atau [Enkripsi](https://docs.aws.amazon.com/kms/latest/APIReference/API_Encrypt.html) respons.

 **Impor** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Kode Sampel** 

```
$KmsClient = new Aws\Kms\KmsClient([
    'profile' => 'default',
    'version' => '2014-11-01',
    'region' => 'us-east-2'
]);

$keyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab';
$ciphertextBlob = 'Place your cipher text blob here';

try {
    $result = $KmsClient->reEncrypt([
        'CiphertextBlob' => $ciphertextBlob,
        'DestinationKeyId' => $keyId,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```