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 for PHP
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 keyuntuk menghasilkan, mengenkripsi, dan mendekripsi kunci data.
Contoh berikut menunjukkan cara:
Semua kode contoh untuk AWS SDK for PHP tersedia di sini GitHub
Kredensial
Sebelum menjalankan kode contoh, konfigurasikan AWS kredensil Anda, seperti yang dijelaskan dalam. Kredensial Kemudian imporAWS SDK for PHP, seperti yang dijelaskan dalamPenggunaan dasar.
Untuk informasi selengkapnya tentang menggunakan AWS Key Management Service (AWS KMS), lihat Panduan AWS KMS Pengembang.
Enkripsi
Operasi Encrypt dirancang untuk mengenkripsi kunci data, tetapi tidak sering digunakan. GenerateDataKeyWithoutPlaintextOperasi GenerateDataKeydan 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
Untuk mendekripsi kunci data, gunakan operasi Decrypt.
ciphertextBlob
Yang Anda tentukan harus menjadi nilai CiphertextBlob
bidang dari GenerateDataKey, GenerateDataKeyWithoutPlaintext, atau Enkripsi 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
Untuk mendekripsi kunci data terenkripsi, dan kemudian segera mengenkripsi ulang kunci data di bawah kunci KMS yang berbeda, gunakan operasi. ReEncrypt Operasi dilakukan sepenuhnya di sisi server dalam AWS KMS, jadi mereka tidak pernah mengekspos plaintext Anda di luar AWS KMS.
ciphertextBlob
Yang Anda tentukan harus menjadi nilai CiphertextBlob
bidang dari GenerateDataKey, GenerateDataKeyWithoutPlaintext, atau Enkripsi 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"; }