

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á.

# Criptografia do lado do cliente
<a name="client-side-encryption"></a>

O [AWS Encryption SDK](https://docs.aws.amazon.com/encryption-sdk/latest/developer-guide/introduction.html) inclui uma operação de API para executar criptografia de envelope usando uma chave KMS. Para obter recomendações completas e detalhes de uso, consulte a [documentação relacionada](https://docs.aws.amazon.com/encryption-sdk/latest/developer-guide/). Os aplicativos cliente podem usar o AWS Encryption SDK para realizar a criptografia de envelope usando AWS KMS.

```
// Instantiate the SDK
final AwsCrypto crypto = new AwsCrypto();
// Set up the KmsMasterKeyProvider backed by the default credentials
final KmsMasterKeyProvider prov = new KmsMasterKeyProvider(keyId); 
// Do the encryption
final byte[] ciphertext = crypto.encryptData(prov, message);
```

A aplicação do cliente pode executar as etapas a seguir:

1. Uma solicitação é feita sob uma chave KMS para uma nova chave de dados. Uma chave de dados criptografada e uma versão em texto simples da chave de dados são retornados.

1. Dentro do AWS Encryption SDK, a chave de dados em texto simples é usada para criptografar a mensagem. Então, a chave de dados de texto simples é excluída da memória. 

1. A chave de dados e mensagem criptografadas são combinadas em uma única matriz de bytes de texto cifrado. 

![AWS Encryption SDK criptografia de envelope.](http://docs.aws.amazon.com/pt_br/kms/latest/cryptographic-details/images/sdk-envelope-encryption.png)


A mensagem criptografada com envelope pode ser descriptografada usando a funcionalidade de descriptografia para obter a mensagem criptografada originalmente.

```
final AwsCrypto crypto = new AwsCrypto();
final KmsMasterKeyProvider prov = new KmsMasterKeyProvider(keyId);
// Decrypt the data
final CryptoResult<byte[], KmsMasterKey> res = crypto.decryptData(prov, ciphertext);
// We need to check the KMS key to ensure that the 
// assumed key was used
if (!res.getMasterKeyIds().get(0).equals(keyId)) {
     throw new IllegalStateException("Wrong key id!");
}
byte[] plaintext = res.getResult();
```

1. Ele AWS Encryption SDK analisa a mensagem criptografada em envelope para obter a chave de dados criptografada e faz uma solicitação para descriptografar AWS KMS a chave de dados.

1. O AWS Encryption SDK recebe a chave de dados em texto simples de. AWS KMS

1. A chave de dados é, então, usada para descriptografar a mensagem, com retorno do texto simples inicial. 

![AWS Encryption SDK decodificação de envelopes.](http://docs.aws.amazon.com/pt_br/kms/latest/cryptographic-details/images/sdk-envelope-decryption.png)
