

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Criptografando novamente um objeto criptografado
<a name="reencrypting-an-encrypted-object"></a>

Um texto cifrado de cliente existente criptografado em uma chave KMS pode ser criptografado novamente para outra chave KMS por meio de um comando reencrypt. O comando Reencrypt criptografa dados no servidor com uma nova chave KMS sem expor o texto simples dos dados no lado do cliente. Primeiro os dados são descriptografados e, depois, criptografados.

Veja, a seguir, a sintaxe de solicitação.

```
{
	"CiphertextBlob": "blob",
	"DestinationEncryptionContext": { "string" : "string" },
	"DestinationKeyId": "string",
	"GrantTokens": ["string"],
       "SourceKeyId": "string",
	"SourceEncryptionContext": { "string" : "string"}
}
```

A solicitação aceita os dados a seguir no formato JSON.

**CiphertextBlob**  
Texto cifrado dos dados a serem criptografados novamente.

** DestinationEncryptionContext**  
(Opcional) Contexto de criptografia a ser usado quando os dados são recriptografados.

**DestinationKeyId**  
Identificador de chave da chave usada para criptografar novamente os dados.

**GrantTokens**  
(Opcional) Uma lista de tokens de concessão que representam concessões que fornecem permissões para executar a descriptografia.

**SourceKeyId**  
(Opcional) Identificador de chave da chave usada para descriptografar os dados.

**SourceEncryptionContext**  
(Opcional) Contexto de criptografia usado para criptografar e descriptografar os dados especificados no parâmetro `CiphertextBlob`.

O processo combina as operações de descriptografia e criptografia das descrições anteriores: o texto cifrado do cliente é descriptografado sob o HBK inicial referenciado pelo texto cifrado do cliente para o HBK atual sob a chave KMS pretendida. Quando as chaves KMS usadas neste comando são as mesmas, esse comando move o texto cifrado do cliente de uma versão antiga de um HBK para a versão mais recente de um HBK.

Veja, a seguir, a sintaxe de resposta.

```
{
    "CiphertextBlob": blob,
    "DestinationEncryptionAlgorithm": "string",
    "KeyId": "string",
    "SourceEncryptionAlgorithm": "string",
    "SourceKeyId": "string"
}
```

Se o aplicativo de chamada quiser garantir a autenticidade do texto simples subjacente, ele deverá verificar se o SourceKeyId retornado é o esperado.