Compartir a través de


Cifrado y descifrado de datos con claves en Azure Key Vault con JavaScript

Cree KeyClient con las credenciales de autenticación de programación adecuadas y, después, cree CryptographyClient y use el cliente para establecer, actualizar y alternar una clave de Azure Key Vault.

Seleccionar un algoritmo de cifrado

Para aprovechar mejor el SDK y sus enumeraciones y tipos proporcionados, seleccione el algoritmo de cifrado antes de continuar con la sección siguiente.

  • RSA - Rivest–Shamir–Adleman
  • AES GCM: modo de contador de Galois Estándar de cifrado avanzado
  • AES CBC: encadenamiento de bloques de cifrado Estándar de cifrado avanzado

Use la enumeración KnownEncryptionAlgorithms para seleccionar un algoritmo específico.

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

const myAlgorithm = KnownEncryptionAlgorithms.RSAOaep256

Obtención de la clave de cifrado

Cree u obtenga la clave de cifrado KeyVaultKey de Key Vault para usarla con cifrado y descifrado.

Cifrado y descifrado con una clave

El cifrado requiere uno de los siguientes objetos de parámetro:

Los tres objetos de parámetro requieren el algorithm y el plaintext que se usan para cifrar. A continuación, se muestra un ejemplo de parámetros de cifrado RSA.

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());
}

El objeto encryptParams establece los parámetros para el cifrado. Use los siguientes objetos de parámetro de cifrado para establecer propiedades.

El objeto decryptParams establece los parámetros para el descifrado. Use los siguientes objetos de parámetro de descifrado para establecer propiedades.

Pasos siguientes