

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Cifrado y descifrado de claves de AWS KMS datos con la versión 3 AWS SDK para PHP
<a name="kms-example-encrypt"></a>

Las claves de datos son las claves de cifrado que puede utilizar para cifrar los datos, incluidas grandes cantidades de datos y otras claves de cifrado de datos.

Puedes usar AWS Key Management Service an's (AWS KMS) [AWS KMS key](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#kms_keys)para generar, cifrar y descifrar claves de datos.

Los siguientes ejemplos muestran cómo:
+ Cifrar una clave de datos mediante [Encrypt](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-kms-2014-11-01.html#encrypt).
+ Descifrar una clave de datos mediante [Decrypt](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-kms-2014-11-01.html#decrypt).
+ Vuelva a cifrar una clave de datos con una nueva clave de KMS mediante. [ReEncrypt](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-kms-2014-11-01.html#reencrypt)

Todo el código de ejemplo para el AWS SDK para PHP está disponible [aquí en. GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code)

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

Antes de ejecutar el código de ejemplo, configure sus AWS credenciales, tal y como se describe en[Autenticación AWS con la AWS SDK para PHP versión 3](credentials.md). A continuación, importe las AWS SDK para PHP, tal y como se describe en[Instalación de la AWS SDK para PHP versión 3](getting-started_installation.md).

Para obtener más información sobre el uso de AWS Key Management Service (AWS KMS), consulte la [Guía del AWS KMS desarrollador](https://docs.aws.amazon.com/kms/latest/developerguide/).

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

La operación [Encrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Encrypt.html) se ha diseñado para cifrar claves de datos, pero no se utiliza con frecuencia. Las [GenerateDataKeyWithoutPlaintext](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKeyWithoutPlaintext.html)operaciones [GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html)y devuelven claves de datos cifradas. Podría utilizar el método `Encypt` cuando mueva datos cifrados a una nueva región de AWS y desee cifrar su clave de datos con una CMK en la nueva región.

 **Importaciones** 

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

use Aws\Exception\AwsException;
```

 **Código de muestra** 

```
$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";
}
```

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

Para descifrar una clave de datos, use la operación [Decrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html).

El valor `ciphertextBlob` que especifique debe ser el valor del `CiphertextBlob` campo de una respuesta [GenerateDataKey[GenerateDataKeyWithoutPlaintext](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKeyWithoutPlaintext.html)](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html), o de [Encrypt.](https://docs.aws.amazon.com/kms/latest/APIReference/API_Encrypt.html)

 **Importaciones** 

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

use Aws\Exception\AwsException;
```

 **Código de muestra** 

```
$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";
}
```

## Volver a cifrar
<a name="reencrypt"></a>

Para descifrar una clave de datos cifrada y volver a cifrarla inmediatamente con una clave KMS diferente, utilice la operación. [ReEncrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_ReEncrypt.html) Las operaciones se realizan íntegramente desde el lado interno del servidor AWS KMS, por lo que nunca se expone el texto sin formato fuera de él. AWS KMS

El valor `ciphertextBlob` que especifique debe ser el valor del `CiphertextBlob` campo de una respuesta [GenerateDataKey[GenerateDataKeyWithoutPlaintext](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKeyWithoutPlaintext.html)](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html), o [Encrypt.](https://docs.aws.amazon.com/kms/latest/APIReference/API_Encrypt.html)

 **Importaciones** 

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

use Aws\Exception\AwsException;
```

 **Código de muestra** 

```
$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";
}
```