Partilhar via


Criptografar e descriptografar dados usando uma chave no Cofre de Chaves do Azure com JavaScript

Crie o KeyClient com as credenciais de autenticação programática apropriadas e, em seguida, crie um CryptographyClient use o cliente para definir, atualizar e girar uma chave no Cofre de Chaves do Azure.

Selecione um algoritmo de encriptação

Para fazer o melhor uso do SDK e seus enums e tipos fornecidos, selecione seu algoritmo de criptografia antes de continuar para a próxima seção.

  • RSA - Rivest–Shamir–Adleman
  • AES GCM - Modo de Contador Galois Padrão de Criptografia Avançada
  • AES CBC - Encadeamento de blocos de cifra padrão de criptografia avançada

Use o enum KnownEncryptionAlgorithms para selecionar um algoritmo específico.

import {
  KnownEncryptionAlgorithms
} from '@azure/keyvault-keys';

const myAlgorithm = KnownEncryptionAlgorithms.RSAOaep256

Obter chave de encriptação

Crie ou obtenha a sua chave de encriptação KeyVaultKey a partir do Cofre da Chave para utilizar com encriptação e desencriptação.

Criptografar e descriptografar com uma chave

A criptografia requer um dos seguintes objetos de parâmetro:

Todos os três objetos de parâmetro requerem o algorithm e o plaintext usado para criptografar. Um exemplo de parâmetros de criptografia RSA é mostrado abaixo.

import { DefaultAzureCredential } from '@azure/identity';
import {
  CryptographyClient,
  KeyClient,
  KnownEncryptionAlgorithms
} from '@azure/keyvault-keys';

// get service client using AZURE_KEYVAULT_NAME environment variable
const credential = new DefaultAzureCredential();
const serviceClient = new KeyClient(
`https://${process.env.AZURE_KEYVAULT_NAME}.vault.azure.net`,
credential
);

// get existing key
const keyVaultKey = await serviceClient.getKey('myRsaKey');

if (keyVaultKey?.name) {

    // get encryption client
    const encryptClient = new CryptographyClient(keyVaultKey, credential);
    
    // set data to encrypt
    const originalInfo = 'Hello World';
    
    // set encryption algorithm
    const algorithm = KnownEncryptionAlgorithms.RSAOaep256;
    
    // encrypt settings: RsaEncryptParameters | AesGcmEncryptParameters | AesCbcEncryptParameters
    const encryptParams = {
        algorithm,
        plaintext: Buffer.from(originalInfo)
    };
    
    // encrypt
    const encryptResult = await encryptClient.encrypt(encryptParams);
    
    // ... hand off encrypted result to another process
    // ... other process needs to decrypt data

    // decrypt settings: DecryptParameters
    const decryptParams = {
        algorithm,
        ciphertext: encryptResult.result
    };
    
    // decrypt
    const decryptResult = await encryptClient.decrypt(decryptParams);
    console.log(decryptResult.result.toString());
}

O objeto encryptParams define os parâmetros para criptografia. Use os seguintes objetos de parâmetro encrypt para definir propriedades.

O objeto decryptParams define os parâmetros para desencriptação. Use os seguintes objetos de parâmetro de descriptografia para definir propriedades.

Próximos passos